我试图用符号定义一个对象作为键类型,因为 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)