Ce
const { foo: IFoo[] } = bar;
et ça
const { foo: Array<IFoo> } = bar;
causera raisonnablement une erreur.
Et ça
const { foo: TFoo } = bar;
va juste détruire la TFoo
propriété.
Comment les types peuvent-ils être spécifiés pour les propriétés d'objets déstructurés?
typescript
destructuring
Fiole d'Estus
la source
la source
bar
toute façon?Réponses:
Il s'avère qu'il est possible de spécifier le type après
:
pour tout le modèle de déstructuration:Ce qui en réalité n'est pas meilleur qu'un simple vieux
la source
{foo}
n'est pas une valeur. C'est ce que l'on appelle généralement un «schéma d'affectation déconstructif». Ce que vous voyez ici est en fait une fonction spéciale de TypeScript qui permet d'associer des types à de tels modèles.let x, y, z: string
qui spécifie apparemment le type pourz
seulement. J'ai mis à jour la réponse.Je suis clairement un peu en retard à la fête, mais:
Les types de propriétés
name
etage
doivent être correctement déduits destring
etnumber
respectivement.la source
Une suite à ma propre question.
Les types n'ont pas besoin d'être spécifiés pour les propriétés d'objet car ils sont déduits d'un objet déstructuré.
Considérant qu'il a
bar
été tapé correctement, lefoo
type sera déduit:Même s'il
bar
n'a pas été correctement tapé (any
ouunknown
), son type peut être affirmé:la source