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

Mar*_*itt 7 typescript

这个答案表明声明一个强制执行number键的地图是有效的.

但是,当我在操场上尝试以下操作时,出现错误.

class Foo
{
    stringMap: { [s: string]: string; } = {};
    numberMap: { [s: number]: string; } = {};
}
Run Code Online (Sandbox Code Playgroud)

numberMap 生成以下编译器错误:

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

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

Rya*_*ugh 10

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

class Foo
{
    stringMap: { [s: string]: string; } = {};
    numberMap: { [s: number]: string; } = <any>{};
}
Run Code Online (Sandbox Code Playgroud)

如果某些东西是可编号的,你通常会使用[]而不是{},但这显然取决于你.