web-dev-qa-db-fra.com

Types en déstructuration d'objet

Cette

const { foo: IFoo[] } = bar;

et ça

const { foo: Array<IFoo> } = bar;

causera raisonnablement une erreur.

Et ça

const { foo: TFoo } = bar;

va simplement détruire la propriété TFoo.

Comment les types peuvent-ils être spécifiés pour les propriétés d'objet déstructuré?

56
Estus Flask

Il s'avère qu'il est possible de spécifier le type après : pour tout le schéma de déstructuration:

const {foo}: {foo: IFoo[]} = bar;

Ce qui en réalité n’est pas meilleur que le vieux vieux

const foo: IFoo[] = bar.foo;
90
artem

Je suis clairement un peu en retard à la fête, mais:

interface User {
  name: string;
  age: number;
}

const obj: any = { name: 'Johnny', age: 25 };
const { name, age }: User = obj;

Les types de propriétés name et age doivent être correctement inférés à string et number respectivement.

30
Stephen Paul