我想为一个对象创建一个接口,该对象返回带有字符串索引的子对象,以及带有符号接口的字符串名称。
const $name = Symbol.for('name')
interface Foo {
[key: string] : Foo
[name: $name] : string
}
然而,我得到的错误是:An index signature must be a string or a number
。但是...索引必须是字符串或数字是不正确的,至少对于现代的javascript版本是这样的?我如何声明我的对象或解决这个问题?
3条答案
按热度按时间wrrgggsh1#
目前似乎还不能对自定义符号执行此操作(除非我误解了线程)。这是一个已知问题,正在作为https://github.com/Microsoft/TypeScript/issues/1863进行跟踪
eaf3rand2#
此问题现已在Typescript(4.9)中得到修复:
https://github.com/microsoft/TypeScript/pull/44512
https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/
x759pob23#
如果您要使用的符号数量不多,暂时的解决方法是将它们加入
globals.d.ts
档案中的SymbolConstructor
界面,然后在程式码中设定它们: