我有两个接口:IEvent
和IWorkflowResizedEvent
扩展了第一个接口。
interface IEvent {
add?(listener: ()=> void): void;
remove?(listener: ()=> void): void;
trigger?(...a: any[]): void;
}
interface IWorkflowResizedEvent extends IEvent {
add(listener:(args: WorkflowResizedEventArgs) => void): void;
remove(listener:(args: WorkflowResizedEventArgs) => void ): void;
trigger(args: WorkflowResizedEventArgs): void;
}
interface WorkflowResizedEventArgs {
}
我收到错误:
接口'IWorkflowResizedEvent无法扩展接口'IEvent': 类型'IWorkflowResizedEvent'和。的属性'触发器'的类型 'IEvent'不兼容:调用类型的签名'(args: WorkflowResizedEventArgs)=> void'和'(... a:any())=>无效的 不兼容:呼叫签名需要0个或更少的参数。
之前我使用的是TypeScript
库的旧版本,而且这段代码运行良好...现在我已经将库更新到最新版本并且问题已经开始了。我发现整个语言规范变化如此强烈......
有没有人知道这里有什么问题?它看起来应该没问题。
答案 0 :(得分:1)
在 TypeScript ...
(所谓的 spread 运算符)中代表我们从C#知道的params
。
根据新标准,您将在方法调用/覆盖中使用扩展运算符。这就是IWorkflowResizedEvent
无法扩展IEvent
的原因。
试试这个:
interface IEvent {
add?(listener: ()=> void): void;
remove?(listener: ()=> void): void;
trigger?(...a: any[]): void;
}
interface IWorkflowResizedEvent extends IEvent {
add(listener:(args: WorkflowResizedEventArgs) => void): void;
remove(listener:(args: WorkflowResizedEventArgs) => void ): void;
trigger(...args: WorkflowResizedEventArgs[]): void;
}
interface WorkflowResizedEventArgs {
}