Typescript: перегрузка обработчиков событий - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь расширить существующий интерфейс, чтобы добавить дополнительные обработчики событий. В интерфейсе, который я расширяю, уже определены несколько обработчиков событий.

Вот базовый интерфейс:

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.

1 Ответ

0 голосов
/ 11 ноября 2018

Нашли решение здесь

Объявив модуль с тем же именем, что и импортированный модуль, вы можете дополнить существующие объявления

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...