Types in object destructuring
This
const { foo: IFoo[] } = bar;
and this
const { foo: Array<IFoo> } = bar;
will reasonably cause an error.
And this
const { foo: TFoo } = bar;
will just destructure TFoo
property.
How can types be specified for destructured object properties?
It turns out it's possible to specify the type after :
for the whole destructuring pattern:
const {foo}: {foo: IFoo[]} = bar;
Which in reality is not any better than plain old
const foo: IFoo[] = bar.foo;
I'm clearly a bit late to the party, but:
interface User {
name: string;
age: number;
}
const obj: any = { name: 'Johnny', age: 25 };
const { name, age }: User = obj;
The types of properties name
and age
should be correctly inferred to string
and number
respectively.