如何在Typescript中导出/导入Array.prototype.customFunction?

时间:2016-10-22 17:42:45

标签: javascript typescript interface prototype global

我有一个文件extensions/array.ts,其中包含以下代码:

Array.prototype.randomPick = function() {
    return this[Math.floor(Math.random() * this.length)];
};

还有一个extensions/string.ts

String.prototype.capitalizeFirstLetter = function() {
    return this.charAt(0).toUpperCase() + this.slice(1);
};

这些内容来自helpers/name-helper.ts

import '../extensions/string';
import '../extensions/array';

declare global {
    interface Array<T> {
        randomPick(): T;
    }
    interface String {
        capitalizeFirstLetter(): string;
    }
}

export default class NameHelper {
    static generate() {
        const adjetives = ['creepy', 'dark', 'desolate', 'bloody', 'green', 'dangerous', 'terrible', 'cold', 'windy', 'cozy'];
        const places = ['meadows', 'hills', 'desert', 'dungeons', 'forest', 'cavern', 'underworld', 'town', 'city', 'castle', 'tower', 'house'];

        return adjetives.randomPick().capitalizeFirstLetter() + ' ' + places.randomPick().capitalizeFirstLetter();
    }
};

我必须在declare global中加入interface Array<T>name-helper,因此打字稿不会抱怨Array.randomPick()不存在,但这意味着我&#39} ; d最终复制并粘贴我使用它的所有数组的接口声明...

我在代码中的其他地方window遇到了同样的问题,并且interface CanvasRenderingContext2D也遇到了问题,所以我可以看到这将成为未来的问题。

有没有办法将interface Array<T>声明移到array.ts

我使用的是Typescript 2.0.3

0 个答案:

没有答案