React: Typescript i komponenty

Opublikowano: 18.02.2023 - tagi: React Typescript JavaScript Komponent

Typescript i komponenty

Poniżej znajdziesz listę przydatnych informacji, jak dodać Typescript przy tworzeniu własnych komponentów:

Właściwości komponentu

Mamy komponent Person.jsx:

const Person = ({ name, weight, height }) => {
    return (
        <div>
            <div>Name: <strong>{name}</strong></div>
            <div>Weight: <strong>{weight} kg</strong></div>
            <div>Height: <strong>{height} cm</strong></div>
        </div>
    )
}

Jak dodać typy do właściwości komponentu?

Po pierwsze musisz stworzyć plik o rozszerzeniu: .tsx.

Na przykład: Person.tsx:

interface IPersonProps {
    name: string;
    weight: number;
    height: number;
}

const Person = ({ name, weight, height }: IPersonProps) => {
    return (
        <div>
            <div>Name: <strong>{name}</strong></div>
            <div>Weight: <strong>{weight} kg</strong></div>
            <div>Height: <strong>{height} cm</strong></div>
        </div>
    )
}

Typ dla children

React umożliwia przekazanie komponentu listy komponentów do innego komponentu w taki sposób:

<ParentComponent><ChildrenComponent /></ParentComponent>

Robi się to poprzez specjalną właściwość o nazwie props.

Jak dodać typ do props?

interface IPersonProps {
    name: string;
    weight: number;
    height: number;
    children: JSX.Element | JSX.Element[];
}

const Person = ({ name, weight, height, children }: IPersonProps) => {
    return (
        <div>
            <div>Name: <strong>{name}</strong></div>
            <div>Weight: <strong>{weight} kg</strong></div>
            <div>Height: <strong>{height} cm</strong></div>
            {children}
        </div>
    )
}

function App() {
    return (
        <>
            <Person name="Jan Kowalski" weight={85} height={190}>
                <div>
                    <strong>Hobby:</strong>
                    <span>Playing Tomb Raider</span>
                </div>
            </Person>
        </>
    );
}

Zwracany typ

Do funkcji Person, która tworzy komponent, można też dodać zwracany typ:

const Person = ({ name, weight, height, children }: IPersonProps): JSX.Element => {
    return (
        <div>
            <div>Name: <strong>{name}</strong></div>
            <div>Weight: <strong>{weight} kg</strong></div>
            <div>Height: <strong>{height} cm</strong></div>
            {children}
        </div>
    )
}