J'ai un composant react qui mappe à travers un tableau.
Chaque élément du tableau a un type d'identification facultatif.
Si j'ai cet ID, je vais rendre un élément, sinon rien.
Cet élément a un onClick qui appelle une fonction acceptant l'ID comme paramètre.
Bien que je vérifie si j'ai l'ID, TypeScript se plaint toujours que l'ID pourrait être indéfini, mais seulement à l'intérieur de la méthode onClick, pas à l'extérieur (voir l'exemple de code).
Pourquoi ? Comment puis-je faire disparaître cette erreur ?
Veuillez voir l'erreur sur le terrain de jeu TypeScript :
// fake bindings
declare namespace React {
function createElement(): any;
}
// This type has an optional prop
type SampleType = {
id?: string;
name: string;
}
const sampleArray: SampleType[] = [{id: 'test', name: 'Adrian'}, {name: 'Florescu'}]
function sampleFunction(id: string){
console.log('ID', id);
}
function SampleComponent() {
return (
<div>
{sampleArray.map((item: SampleType) => {
if(item.id) {
sampleFunction(item.id); // This works
return <p onClick={() => { sampleFunction(item.id); }}>{item.name}</p>; //// This does not work
}
})}
</div>
)
};
const dom = <SampleComponent />;