全局添加函数到原型(从模块内)

2023-11-29

我想从模块内向 Typescript (1.8) 中的数组原型添加一个函数。

我正在更改 utils.ts 文件中的原型:

declare global {
    interface Array<T> {
        remove(obj: any): void;
    }
}

Array.prototype.remove = function(obj) {
    var idx = this.indexOf(obj);
    if (idx > -1) {
        this.splice(idx, 1);
    }
}

现在我想在我的 main.ts 文件中全局应用该更改,如下所示:

import {Array<T>.remove} from "./utils.ts"

let arr = ["an", "array"];
arr.remove("array");

我可以导入接口声明,但对 Array 原型的更改在 main.ts 文件中不可用。如何对原型进行更改并将其全局应用或以某种方式导入“删除”功能?


这对我有用:

test.ts:

export {};

declare global {
    interface Array<T> {
        remove(obj: any): void;
    }
}

Array.prototype.remove = function(obj) {
    var idx = this.indexOf(obj);
    if (idx > -1) {
        this.splice(idx, 1);
    }
}

测试2.ts:

import "./test";

let arr = ["an", "array"];
arr.remove("array");
console.log(arr);

编译并运行:

tsc -m "commonjs" ./test2.ts
node ./test2.js

Output:

[ 'an' ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全局添加函数到原型(从模块内) 的相关文章

随机推荐