我想为一个对象创建一个接口(interface),该对象具有具有特定名称的可选属性,但也接受任意命名的属性。这是我尝试过的。
interface CallBack {
onTransition?(): any; // can have this
[key: string]: () => any; // or this. But not both
}
但是收到这个错误:
'(() => any) 类型的属性'onBeforeTransition' | undefined' 不可分配给字符串索引类型 '() => any'
。
我认识到这在语义上与以下含义相同:
interface CallBack {
[key: string]: () => any;
}
我想要此功能的原因是为了让编辑器在定义回调时提供帮助。有什么办法可以实现吗?
最佳答案
你可以让索引签名的返回类型返回 (() => any) |未定义
。无论如何,这可能是个好主意,因为对该对象的任何字符串访问都可能返回一个函数或未定义的,无论如何都应该检查。
interface CallBack {
onTransition?(): any;
[key: string]: (() => any) | undefined;
}
关于具有一些已知但可选的属性名称和一些未知属性名称的对象的 Typescript 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54796530/