为什么 TypeScript 中的接口可以同时具有数字和字符串索引签名?
Why is it possible to have both numeric and string index signatures for an interface in TypeScript?
根据语言规范,可以有一个同时具有数字和字符串索引签名的接口,因此以下接口似乎是有效的:
interface WeirdArray {
[index: string]: string;
[index: number]: string;
}
但是我找不到可以使用这种接口的合适示例,有人可以提供这种接口有意义的示例吗?
因为数字索引器类型必须是字符串索引器类型的子类型,所以它不是很有用,除非你有一些疯狂的类型,其中以字符串命名的属性是某种基本类型,而以数字命名的属性是该类型的子类型。我无法想象它的用途。
简而言之,它是允许的,因为它不是不允许的。
根据语言规范,可以有一个同时具有数字和字符串索引签名的接口,因此以下接口似乎是有效的:
interface WeirdArray {
[index: string]: string;
[index: number]: string;
}
但是我找不到可以使用这种接口的合适示例,有人可以提供这种接口有意义的示例吗?
因为数字索引器类型必须是字符串索引器类型的子类型,所以它不是很有用,除非你有一些疯狂的类型,其中以字符串命名的属性是某种基本类型,而以数字命名的属性是该类型的子类型。我无法想象它的用途。
简而言之,它是允许的,因为它不是不允许的。