Bonjour à tous,
J'essaye de me former à TS en suivant la nouvelle formation React pour l'adapter au typage offert par TS.
Néanmoins je sèche sur certains cas que je n'arrive pas résoudre ou comprendre.
Ci-dessous une interface Product puis un array d'objets typé de la facon const productsList: Product[] :
interface Product {
category: string;
price: string;
stocked: boolean;
name: string;
}
const productsList: Product[] = [
{ category: 'Fruits', price: '$1', stocked: true, name: 'Apple' },
{ category: 'Fruits', price: '$1', stocked: true, name: 'Dragonfruit' },
{ category: 'Fruits', price: '$2', stocked: false, name: 'Passionfruit' },
{ category: 'Vegetables', price: '$2', stocked: true, name: 'Spinach' },
{ category: 'Vegetables', price: '$4', stocked: false, name: 'Pumpkin' },
{ category: 'Vegetables', price: '$1', stocked: true, name: 'Peas' },
];
Dans la fonction App je vais passer la const productsList: Product[] en param => OK :
function App() {
return (
...
<ProductTable products={productsList} />
...
}
Puis dans la fonction ProductTable :
function ProductTable({ products }: Product[]) {
...
}
En typant de cette façon, j'obtiens l'erreur : La propriété 'products' n'existe pas sur le type 'Product[]'.
De cette autre façon c'est OK :
function ProductTable({ products }: { products: Product[] }) {
...
}
J'avais cru comprendre qu'en déclarant un type ou une interface, je ne serai pas obligé de typer mon param de la seconde façon.
Ai-je mal compris ou manque t-il quelque chose dans mon code pour la première façon de faire.
Merci à vous