Добавить метод в существующий класс в машинописном тексте?

Я работаю в угловом проекте 2 cli, в котором я должен создать определение плагина, потому что его не существует. Этот плагин зависит от основной библиотеки, которая уже имеет свой собственный тип и работает.

Во всяком случае, у меня есть два файла:

БИБЛИОТЕЧНЫЕ ТИПЫ ФАЙЛ A

export class A extends B {
    constructor(...);
    methodX(): void;
}

И мне нужно будет добавить новый метод для моего плагина, чтобы мой класс был похож

export class A extends B {
        constructor(...);
        methodX(): void;
        methodY(): void;
    }

Дело в том, что мне нужно добавить его в отдельный файл. Проблема заключается в добавлении метода к существующему классу без создания нового

Если я поставлю

ТИПЫ ПЛАНИРОВАНИЯ FILE B

export class A extends B {
    constructor(...);
    methodX(): void;
}

или

ТИПЫ ПЛАНИРОВАНИЯ FILE B

export class A extends B {
        constructor(...);
        methodX(): void;
        methodY(): void;
}

Это не работает, кто-нибудь, как я могу добиться перезаписи класса или расширения его с помощью нового метода?

благодаря

javascript,angular,typescript,angular2-cli,

2

Ответов: 2


3 принят

Вы можете сделать это, установив интерфейс с новым методом и изменив прототип.

Что-то вроде этого:

class B { }

class A extends B {
    constructor() {
        super();
    }
    methodX(): void { };
    methodY(): void { };
}


interface B {
    newMethod(): void;
}

B.prototype.newMethod = function () { console.log('a') };

Это позволяет вам правильно набирать текст при выполнении.

new A().newMethod();

Я сделал пример детской площадки здесь .


3

Вы можете сделать это напрямую, как A.prototype.functionName = function(){...}

Вот плункер: http://plnkr.co/edit/6KrhTCLTHw9wjMTSI7NH?p=preview

JavaScript, угловые, машинопись, angular2-кли,
Похожие вопросы