打字稿:用符号作为键来解构对象

为什么此代码会产生错误类型’symbol’不能用于索引类型'{[x:string]:string; }”:

let symbol = Symbol()
let obj = { [symbol] : 'value'}
let { [symbol]: alias } = obj
             // ^^^^^ the error is here

console.log(alias)

最重要的是,我该如何解决这个问题?

最佳答案 您只需要将符号声明为const,以使编译器为其推断文字类型,而不是通用符号类型.

const symbol = Symbol()
let obj = { [symbol] : 'value'}
let { [symbol]: alias } = obj


console.log(alias)

当打字稿推断出一个独特的符号时,这个PR可能很有用

点赞