具有某些已知但可选属性名和某些未知属性名的对象的Typescript接口

具有某些已知但可选属性名和某些未知属性名的对象的Typescript接口,typescript,typescript-typings,Typescript,Typescript Typings,我想为一个对象创建一个接口,该对象具有具有特定名称的可选属性,但也接受任意命名的属性。这就是我试过的 接口回调{ onTransition?():any;//可以有这个 [key:string]:()=>any;//或者这个。但不是两者都有 } 但是收到了这个错误: “(()=>any)| undefined”类型的属性“onbeforetransfition”不能分配给字符串索引类型“()=>any”。 我认识到,这在语义上与: 接口回调{ [键:字符串]:()=>任意; } 我想要这个功

我想为一个对象创建一个接口,该对象具有具有特定名称的可选属性,但也接受任意命名的属性。这就是我试过的

接口回调{
onTransition?():any;//可以有这个
[key:string]:()=>any;//或者这个。但不是两者都有
}
但是收到了这个错误:

“(()=>any)| undefined”类型的属性“onbeforetransfition”不能分配给字符串索引类型“()=>any”。 我认识到,这在语义上与:

接口回调{
[键:字符串]:()=>任意;
}

我想要这个功能的原因是为了在定义回调时有编辑器帮助。有什么方法可以实现这一点吗?

您可以使索引签名的返回类型返回
(()=>any)|未定义
。无论如何,这可能是一个好主意,因为对对象的任何字符串访问都可能返回一个函数或未定义,并且无论如何都应该进行检查

interface CallBack {
    onTransition?(): any; 
    [key: string]: (() => any) | undefined;
}