我试图用符号定义一个对象作为键类型,因为 MDN 说:
符号值可用作对象属性的标识符 [...]
但是使用它作为键属性的类型:
type obj = {
[key: symbol | string]: string
}
Run Code Online (Sandbox Code Playgroud)
导致以下错误:
TS1023:索引签名参数类型必须是“字符串”或“数字”。
甚至可以用作索引类型。我正在使用最新的打字稿版本 ( v3.7.2),我发现了相关问题:
symbol)我还查看了打字稿符号文档,但它们只显示了如何将其用作值,而不是类型。
例子:
const obj = {} as {
[key: number | symbol]: string // Won't work
};
const sym = Symbol('My symbol');
obj[sym] = 'Hi';
Run Code Online (Sandbox Code Playgroud)
为什么此代码会产生错误Type 'symbol' cannot be used to index type '{ [x: string]: string; }'.:
let symbol = Symbol()
let obj = { [symbol] : 'value'}
let { [symbol]: alias } = obj
// ^^^^^ the error is here
console.log(alias)
Run Code Online (Sandbox Code Playgroud)
最重要的是,我该如何解决这个问题?