打字稿:在地图中使用数字作为键

时间:2013-02-21 04:11:45

标签: typescript

This answer表示声明一张强制number为关键字的地图是有效的。

但是,当我在playground中尝试以下操作时,出现错误。

class Foo
{
    stringMap: { [s: string]: string; } = {};
    numberMap: { [s: number]: string; } = {};
}

numberMap生成以下编译器错误:

  

无法将'{}'转换为'{ [s: number]: string; }':索引签名   类型'{}''{ [s: number]: string; }'不兼容{}

宣布这个的正确方法是什么?

1 个答案:

答案 0 :(得分:10)

我不是100%确定这是否是一个错误(我需要查看规范),但是这样做可以解决这个问题:

class Foo
{
    stringMap: { [s: string]: string; } = {};
    numberMap: { [s: number]: string; } = <any>{};
}

如果某些内容可以按编号转换,那么您通常会使用[]代替{},但这显然取决于您。