相关疑难解决方法(0)

在 TypeScript 中使用符号作为对象键类型

我试图用符号定义一个对象作为键类型,因为 MDN 说:

符号值可用作对象属性的标识符 [...]

但是使用它作为键属性的类型:

type obj = {
    [key: symbol | string]: string
}
Run Code Online (Sandbox Code Playgroud)

导致以下错误:

TS1023:索引签名参数类型必须是“字符串”或“数字”。

甚至可以用作索引类型。我正在使用最新的打字稿版本 ( v3.7.2),我发现了相关问题:

我还查看了打字稿符号文档,但它们只显示了如何将其用作值,而不是类型。

例子:

const obj = {} as {
    [key: number | symbol]: string // Won't work
};

const sym = Symbol('My symbol');
obj[sym] = 'Hi';
Run Code Online (Sandbox Code Playgroud)

Microsoft/TypeScript 上的问题

打开功能请求

javascript types symbols typescript

30
推荐指数
2
解决办法
9023
查看次数

打字稿:以符号为键解构对象

为什么此代码会产生错误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)

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

destructuring typescript

6
推荐指数
1
解决办法
615
查看次数

标签 统计

typescript ×2

destructuring ×1

javascript ×1

symbols ×1

types ×1