我想为一个对象创建一个接口,该对象返回带有字符串索引的子对象,以及带有符号接口的字符串名称。我尝试了以下方法:
const $name = Symbol.for('name')
interface Foo {
[key: string] : Foo
[name: $name] : string
}
但是,我收到错误:An index signature must be a string or a number
。但是......索引必须是字符串或数字并不是真的,至少对于现代javascript版本而言?如何声明我的对象或解决此问题?
答案 0 :(得分:3)
目前看来你不能为自定义符号执行此操作(除非我误读了该线程)。这是一个已知问题,正在跟踪https://github.com/Microsoft/TypeScript/issues/1863
答案 1 :(得分:0)
如果您要使用少量符号,则临时解决方法是将它们添加到SymbolConstructor
文件中的globals.d.ts
界面,然后在代码中设置它们: / p>
// globals.d.ts
interface SymbolConstructor {
$name: symbol;
}
// code.ts
const $name = Symbol.for('name');
Symbol.$name = $name;
interface Foo {
[key: string] : Foo
[Symbol.$name] : string
}