typescript 类型“symbol”不能赋给类型“string”,(2322)

uklbhaso  于 2023-02-13  发布在  TypeScript
关注(0)|答案(2)|浏览(334)

给定符号

const title = Symbol('Csv column title');

表示对象的键和表中表头的文本。我想我可以这样设置表头

const tableHeaders: { key: string }[] = [{ key: title }];

但不幸的是我得到了错误
类型"symbol"不能赋给类型"string"。(2322)
以及
TypeError:无法将Symbol值转换为字符串
看起来Symbol.prototype.toString()不是我要找的,因为Symbol('title').toString()返回"Symbol(title)"
如何将符号用作字符串?

kmbjn2e3

kmbjn2e31#

可以像这样使用keyoftypeof

const title = Symbol('Csv column title');

const tableHeaders: { [key in keyof typeof title]: string }[] = [{ [title]: 'Title' }];
llew8vvj

llew8vvj2#

您可以使用全局符号注册表¹ ²来实现这一点:

const title = Symbol.for('Csv column title');

const tableHeaders: { key: string }[] = [{ key: Symbol.keyFor(title)! }];

如果需要再次检索符号,可以使用Symbol.for(tableHeaders[0].key),它应该从注册表中获得相同的符号。

相关问题