从Typescript中的另一个文件向类添加函数

时间:2018-05-03 13:04:34

标签: function typescript extension-methods

我想知道是否有可能在Typescript中为类的原型添加一些函数。

我的情况如下: 我有一个类的文件,例如image.ts:

export class Image {
    b64img: string;
}

生成此类,因此无法向其添加方法。我在其他生成的类中使用此类,因此无法使用extends Image创建新类来添加函数。

有没有选项可以在一个单独的文件中为我的类添加一个函数,所以我可以在类Image的所有对象上使用它?

由于

1 个答案:

答案 0 :(得分:4)

你可以。您可以通过定义其定义的模块的扩展来扩展它。

创建一个名为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文件中,以便自动加载,并在另一个文件中将真实函数添加到原型中,确保这样的文件得到加载到您的应用程序中