это
const { foo: IFoo[] } = bar;
и это
const { foo: Array<IFoo> } = bar;
разумно вызовет ошибку.
И это
const { foo: TFoo } = bar;
просто разрушит TFoo
собственность.
Как можно указать типы для свойств деструктурированного объекта?
typescript
destructuring
Фляга Эстуса
источник
источник
bar
?Ответы:
Оказывается, можно указать тип после
:
для всего шаблона деструктуризации:Что на самом деле не лучше, чем просто старый
источник
{foo}
это не ценность. Это то, что обычно называют «деконструирующим шаблоном присваивания». То, что вы здесь видите, на самом деле является специальной функцией TypeScript, которая позволяет ассоциировать типы с такими шаблонами.let x, y, z: string
которым явно указывается типz
только для . Я обновил ответ.Я явно немного опоздал на вечеринку, но:
Типы свойств
name
иage
должны быть правильно выведены дляstring
иnumber
соответственно.источник
Продолжение моего собственного вопроса.
Типы не нужно указывать для свойств объекта, поскольку они выводятся из деструктурированного объекта.
Учитывая, что
bar
набран правильно,foo
будет выведен тип:Даже если он
bar
был напечатан неправильно (any
илиunknown
), его тип может быть утвержден:источник