从数字索引返回的类型必须是从字符串索引返回的类型的子类型

时间:2015-11-10 08:51:40

标签: typescript

http://www.typescriptlang.org/Handbook#interfaces-array-types 这意味着什么 “有限制,从数字索引返回的类型必须是从字符串索引返回的类型的子类型。”

有人能举个例子吗?

1 个答案:

答案 0 :(得分:1)

仅供参考,有两种类型的索引签名,字符串和数字。

字符串索引签名:

[index: string]: SomeType

这表示当我通过字符串索引访问此对象的属性时,该属性将具有类型SomeType

数字索引签名:

[index: number]: SomeOtherType

这表示当我通过数字索引访问此对象的属性时,该属性将具有类型SomeOtherType

要明确的是,通过字符串索引访问属性是这样的:

a["something"]

并通过数字索引:

a[123]

您可以定义字符串索引签名和数字索引签名,但数字索引的类型必须与字符串索引相同,或者它必须是字符串索引返回的类型的子类。 / p>

所以,这没关系:

interface SomeInterface {
    [index: string]: Fruit;
    [index: number]: Fruit;
}

因为两个索引签名都具有相同的类型Fruit。但你也可以这样做:

interface SomeInterface {
    [index: string]: Fruit;
    [index: number]: Apple;
}

只要AppleFruit的子类。