This answer表示声明一张强制number
为关键字的地图是有效的。
但是,当我在playground中尝试以下操作时,出现错误。
class Foo
{
stringMap: { [s: string]: string; } = {};
numberMap: { [s: number]: string; } = {};
}
numberMap
生成以下编译器错误:
无法将
'{}'
转换为'{ [s: number]: string; }'
:索引签名 类型'{}'
和'{ [s: number]: string; }'
不兼容{}
宣布这个的正确方法是什么?
答案 0 :(得分:10)
我不是100%确定这是否是一个错误(我需要查看规范),但是这样做可以解决这个问题:
class Foo
{
stringMap: { [s: string]: string; } = {};
numberMap: { [s: number]: string; } = <any>{};
}
如果某些内容可以按编号转换,那么您通常会使用[]
代替{}
,但这显然取决于您。