有了這個接口聲明:Typescript索引屬性約束檢查工作原始類型但不是對象文字?
interface Thing1 {
[key: string]: string;
x: number;
}
打字稿,在編譯時,拋出一個錯誤「TS2411:房產‘X’的類型編號是不能分配給字符串索引類型‘字符串’」
聽起來合法。
但是,只要我使用對象文本作爲我的索引類型值:
interface Foo {}
interface Thing2 {
[key: string]: Foo;
foo: number;
}
...它不抱怨了,這聽起來有些不可思議我爲number
仍然是一個不同的類型Foo
對此背後原因有何想法?
注意:使用打字稿2.1.5
我意識到結構分型的,但是,我從來沒有想過一個數量將有完全相同的「結構」(在其API的方面)作爲對象常量。 奇怪。 :-) –
@Frédéric要清楚,一個數字並不具有相同的結構,只是對於'{}'上的每個屬性,'Number'上都有一個與其名稱和類型相同的屬性。我會澄清答案。 – Seamus