我想为一个对象创建一个接口,该对象具有带有特定名称的可选属性,但也可以接受任意命名的属性。这就是我尝试过的。
interface CallBack {
onTransition?(): any; // can have this
[key: string]: () => any; // or this. But not both
}
但收到此错误:
Property 'onBeforeTransition' of type '(() => any) | undefined' is not assignable to string index type '() => any'
。
我认识到这在语义上与以下内容具有相同的含义:
interface CallBack {
[key: string]: () => any;
}
我想要此功能的原因是为了在定义回调时获得编辑器帮助。有什么办法可以做到这一点?
答案 0 :(得分:2)
您可以使索引签名的返回类型返回(() => any) | undefined
。无论如何,这可能是一个好主意,因为对对象的任何字符串访问都可能返回一个函数或未定义,因此无论如何都应进行检查。
interface CallBack {
onTransition?(): any;
[key: string]: (() => any) | undefined;
}