首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >类型记录:重载事件处理程序

类型记录:重载事件处理程序
EN

Stack Overflow用户
提问于 2018-11-08 23:33:23
回答 1查看 222关注 0票数 1

我试图扩展现有的接口,以添加额外的事件处理程序。我正在扩展的接口已经定义了几个事件处理程序。

下面是基本接口:

代码语言:javascript
运行
复制
export interface Emitter {

  on(event: 'connect', listener: (err: Error) => void ):this;

  on(event: 'end', listener: () => void ):this;
}

下面也是基类:

代码语言:javascript
运行
复制
export class Emitter extends events.EventEmitter {}

这是我的界面:

代码语言:javascript
运行
复制
export interface EmitterExtended extends Emitter {
  on(event: 'status', listener: (status: ConnectionStatus) => void ):this;
  status?: ConnectionStatus;
}

下面是错误类型记录:

代码语言:javascript
运行
复制
Interface 'EmitterExtended' incorrectly extends interface 'Emitter'.
Types of property 'on' are incompatible.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-11 00:32:04

找到解决方案这里

通过声明与导入模块同名的模块,可以增强现有的声明。

代码语言:javascript
运行
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53217733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档