我正在尝试扩展现有接口以添加其他事件处理程序。我正在扩展的接口已经定义了几个事件处理程序。
这是基本界面:
export interface Emitter {
on(event: 'connect', listener: (err: Error) => void ):this;
on(event: 'end', listener: () => void ):this;
}
这也是基类:
export class Emitter extends events.EventEmitter {}
这是我的界面:
export interface EmitterExtended extends Emitter {
on(event: 'status', listener: (status: ConnectionStatus) => void ):this;
status?: ConnectionStatus;
}
这是打字稿给出的错误:
Interface 'EmitterExtended' incorrectly extends interface 'Emitter'.
Types of property 'on' are incompatible.
答案 0 :(得分:0)
找到了解决方法here
通过声明与导入模块同名的模块,可以扩展现有的声明
import { Observable } from "./observable";
declare module "./observable" {
interface Observable<T> {
map<U>(f: (x: T) => U): Observable<U>;
}
}
Observable.prototype.map = function (f) {
// ... another exercise for the reader
}