const { foo: IFoo[] } = bar;
這
const { foo: Array<IFoo> } = bar;
會合理地導致一個錯誤。
這
const { foo: TFoo } = bar;
只會解構TFoo
財產。
如何指定解構對象屬性的類型?
const { foo: IFoo[] } = bar;
這
const { foo: Array<IFoo> } = bar;
會合理地導致一個錯誤。
這
const { foo: TFoo } = bar;
只會解構TFoo
財產。
如何指定解構對象屬性的類型?
事實證明這是可能:
後指定型爲全解構模式:
const {foo}: {foo: IFoo[]} = bar;
這在現實中並不比普通的更老
const foo: IFoo[] = bar.foo;
但是{foo}不是一個值。這就是通常所說的「解構賦值模式」。你在這裏看到的實際上是一種特殊的TypeScript功能,它允許類型與這些模式相關聯。 – 2016-09-24 07:02:45
事實上,它更像是一種特殊情況,特別是與'let x,y,z:string'相比,它明顯只指定了'z'的類型。我更新了答案。 – artem
顯然我一個但是:
interface User {
name: string;
age: number;
}
const obj: any = {name: 'Johnny', age: 25};
const {name, age}: User = obj;
屬性的類型01應分別正確推斷爲和age
分別爲string
和number
。
好問題,但是它不能從「bar」的定義中推斷出類型嗎? – 2016-09-24 05:34:05
這個覆蓋得很好[這裏](https://blog.mariusschulz.com/2015/11/13/typing-destructured-object-parameters-in-typescript)。 – 2016-09-24 07:00:10
@torazaburo謝謝,它看起來像唯一的語法是在答案。 'bar'來自外部並且是鬆散的類型,所以我只想輸入所需的屬性。 – estus