我想在一个模块中向Typescript(1.8)中的Array原型添加一个函数。
我正在改变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");
我可以导入接口声明但是main.ts文件中没有对Array原型的更改。如何更改原型并全局应用或以某种方式导入“删除”功能?
答案 0 :(得分:2)
这对我有用:
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);
}
}
test2.ts:
import "./test";
let arr = ["an", "array"];
arr.remove("array");
console.log(arr);
编译并运行:
tsc -m "commonjs" ./test2.ts
node ./test2.js
输出:
[ 'an' ]