我知道你不能在TypeScript(TS)中擴展像Array和String這樣的本機類型。我有一些使用純JS編寫的小擴展,我想向TS公開。例如:將原生JS對象的擴展公開給打印機?
Array.prototype.first = function(testFunction) {
if(typeof(testFunction) !== 'function') {
return null;
}
var result = null;
this.forEach(function(item){
if(testFunction(item)) {
result = item;
return;
}
});
return result;
};
這是在Array.js中。如何將「第一個」功能暴露給TS。
我曾嘗試創建其中包含一個Extensions.d.ts文件:
export declare var Array: {
findItem(callback: Function);
}
,然後引用該聲明在我app.ts:
/// <reference path="Extensions.d.ts" />
var x: string[] = new Array();
x.first(function (x) { return false; });
但app.ts不似乎知道第一個()函數。
這可能嗎?
編輯:好吧,看來我需要這在我的.d.ts文件:
interface Array<T> {
first(callback: (Function : T) => boolean) : T;
}
所以我想我只需要回答以下問題。考慮:
String.format = function() {
var formatString = arguments[0];
if(arguments.length < 2) {
return formatString;
}
var args = Array.prototype.slice.call(arguments, 1);
//do formatting here
return result;
}
如何聲明靜態擴展名?
可能重複(http://stackoverflow.com/questions/ 12802383 /擴大陣列在打字稿) – WiredPrairie