typescript - 打字稿:重载事件处理程序
问题描述
我正在尝试扩展现有接口以添加其他事件处理程序。我正在扩展的接口已经定义了几个事件处理程序。
这是基本界面:
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.
解决方案
在这里找到了解决方案
通过声明与导入模块同名的模块,您可以扩充现有声明
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
}
推荐阅读
- python - 如何在Python中一一计算每个预测值的准确性?
- angular - 在 Angular 上安装 ng zorro 的问题
- http - 如何在wrk的请求行中更改uri
- java - JSONException:测试中无法解析的 JSON 字符串
- ios - NSNumberFormatter - 获取货币代码的货币符号
- java - Spring Boot 和弹性搜索 | 多索引搜索功能
- python - Discord 机器人加入 VC
- ios - 删除 tableview 单元格不会更新索引
- c# - Postgres CITEXT 在 DBeaver 中查询时有效,但在 postman 或 swagger 中通过 API 调用时无效
- php - 如何用变量替换子字符串?