为什么 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;
}

但是我找不到可以使用这种接口的合适示例,有人可以提供这种接口有意义的示例吗?

因为数字索引器类型必须是字符串索引器类型的子类型,所以它不是很有用,除非你有一些疯狂的类型,其中以字符串命名的属性是某种基本类型,而以数字命名的属性是该类型的子类型。我无法想象它的用途。

简而言之,它是允许的,因为它不是不允许的