我试图扩展现有的接口,以添加额外的事件处理程序。我正在扩展的接口已经定义了几个事件处理程序。
下面是基本接口:
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.
发布于 2018-11-11 00:32:04
找到解决方案这里
通过声明与导入模块同名的模块,可以增强现有的声明。
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
}
https://stackoverflow.com/questions/53217733
复制相似问题