Comment comprendre l'intersection TypeScript via keyof
P粉451614834
P粉451614834 2023-09-05 22:37:33
0
1
392
<p><pre class="brush:php;toolbar:false;">interface Personne { nom : chaîne ; } Durée de vie de l'interface { date de naissance; date de mort; } tapez PersonSpan = Personne et durée de vie; tapez K = clé de PersonSpan ; // tapez K = "nom" | let prop : K = "nom" ; // ok let obj : PersonSpan = { // erreur de compilation, propriétés de naissance et de décès manquantes nom : "John Smith" }</pré> <p>Si je veux comprendre l'intersection de types via <code>keyof</code> : </p> <p>La clé<code>{ name : "John Smith" }</code> de cette instance d'objet est <code>name</code>, qui correspond à la <code>keyof PersonSpan</code> , c'est-à-dire <code> "name" | "birth" | "death" </code>, il est valide d'exécuter <code>let prop: "name" |. "Naissance" | "Décès" = "Nom" </code></p> <p>Donc, tant que l'objet possède l'une de ces trois propriétés, il doit être valide, pourquoi doit-il toujours avoir toutes les propriétés attribuables à <code>PersonSpan</code> ? </p>
P粉451614834
P粉451614834

répondre à tous(1)
P粉267791326

Dans TypeScript, lorsque vous définissez un type en utilisant l'intersection & de deux types ou plus, le type résultant aura toutes les propriétés de chaque type d'intersection. Dans ce cas, PersonSpan est défini comme l'intersection de Person et Lifespan, donc un objet de type PersonSpan doit avoir toutes les propriétés de Person et Lifespan. Même si keyof PersonSpan donne "name" | "birth" | "death", cela ne signifie pas que tout objet avec une seule de ces propriétés est valide pour PersonSpan, cela signifie que le type K que vous avez initialisé est une combinaison de PersonSpan. noms de propriétés Set, vous pouvez accéder à ces propriétés en utilisant la clé "name" sur un objet de type PersonSpan, "birth" ou "death" qui peut également être le type Partial que vous recherchez, ce qui rend tous les accessoires facultatifs

let obj: Partial<PersonSpan> = {  
   name: "John Smith"
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!