从文档:
虽然字符串索引签名是描述“字典”模式的强大方式,但它们也强制所有属性匹配其返回类型。
然后他们显示这个界面:
interface NumberDictionary {
[index: string]: number;
length: number; // ok, length is a number
name: string; // error, the type of 'name' is not a subtype of the indexer
}
我的问题是 - 为什么name必须是索引器的子类型?如果我有一个对象,除了name预期之外的所有东西都是whilenumber怎么办?namestring
然后,文档说:
这是因为字符串索引声明
obj.property也可用作obj["property"].
如果nameisstring和 not number,我仍然可以同时使用obj.nameand访问它obj["name"]?我不明白这有什么不同。