我试图定义一个将键映射到数字的字典 我发现了这个 {[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'
但是,此解决方案尚未完成。它在我尝试使用[]手镯访问属性时有效。但不是作为对象属性。 有办法吗?
答案 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"]);