无法定义TypeScript字典

时间:2016-04-07 15:34:21

标签: dictionary typescript

我试图定义一个将键映射到数字的字典 我发现了这个 {[key:string]:number}

var x: {[key: string]: number} = {
    a: 33,
    b: 25
}

x.a = 32; // Property 'a' does not exist on type: {[key: string]: number;}

x['a'] = 32; // works as expected
x['b'] = '22';  // Type 'string' is no assignable to type 'number'

Link to TypeScript playground

但是,此解决方案尚未完成。它在我尝试使用[]手镯访问属性时有效。但不是作为对象属性。 有办法吗?

1 个答案:

答案 0 :(得分:0)

我认为不可能。类型系统的整个目的是允许您定义所描述对象的已知结构。否则,您可以使用any作为类型。

但您可以使用下面示例中的对象文字,这将允许您在字典中显式指定一些已知属性:

let x: { PropA: number, [x: string]: number };
x = { PropA: 1, PropX: 2, PropY: 3, PropZ: 4 };
console.log(x.PropA);
console.log(x["PropX"]);