我在一个大型项目中有一个对象,它使用 null 作为键,并且无法更改,因为它会破坏整个应用程序。
但是,我得到Type null不能用作索引类型。 ts(2538)
到处都是。有没有办法告诉 TypeScript 接受 null 作为对象键,就像接受数字作为键一样?
最佳答案
javascript中的所有键都会转换为字符串或符号。即使分配了非字符串值,键也会转换为字符串。
因此 MyObject[null]
应该变成类似 MyObject['null']
并且应该按原样工作。您所要做的就是在访问属性时使用 'null'(作为字符串)而不是 null
。
请注意,还需要进行另一项更改。下面的语句意味着key
可以被分配任何string
值或值null
。
const key: string | null = null;
但是MyObject
只有三个有效键a,b,null
。所以你应该修改你的声明,如:
const key: keyof typeof MyObject = 'null';
或
const key = 'null';
因此,key
只能分配有效的 MyObject
键。
const MyObject = {
null: 0,
a: 1,
b: 2,
}
//const key: keyof typeof MyObject = 'null';
const key = 'null';
console.log(MyObject[key]);
关于javascript - 如何强制 TypeScript 允许 null 作为索引类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76583270/