Добавить функцию в класс из другого файла в Typescript - PullRequest
0 голосов
/ 03 мая 2018

Мне было интересно, есть ли возможность добавить некоторые функции в прототип класса в Typescript.

Моя ситуация такова: У меня есть файл с классом, например image.ts:

export class Image {
    b64img: string;
}

Этот класс создан, и поэтому я не могу добавить к нему методы. Я использую этот класс в других сгенерированных классах, поэтому создание нового класса с расширением Image невозможно для добавления функций.

Можно ли добавить функцию к своему классу в отдельном файле, чтобы я мог использовать ее для всех объектов класса Image?

Спасибо

1 Ответ

0 голосов
/ 03 мая 2018

Можно. Вы можете расширить его, определив расширение для модуля, в котором оно определено.

Создайте файл с именем image-extension.ts или что-то в этом роде.

Теперь, если в этом файле вы импортируете Image следующим образом:

import { Image } from `image`;

declare module 'image' { // same name than in the import!
    export interface Image {
         newMethod: () => void;
    }
}

Image.prototype.newMethod = function() {
    console.log('new method');
}

Теперь, куда бы вы ни импортировали этот файл, вы можете использовать этот метод:

import { Image } from 'image';
import 'image-extension'; // import just for side-effects

Конечно, вы также можете добавить declare module в файл d.ts, чтобы он автоматически загружался, а в другом файле добавить истинные функции в прототип, убедившись, что такой файл загружается в ваше приложение.

...