回答
可以使用原型來擴展陣列:
interface Array<T> {
remove(o: T): Array<T>;
}
Array.prototype.remove = function (o) {
// code to remove "o"
return this;
}
@FrancoisVanderseypen可能是一種痛苦,我建議你不要嘗試。這裏提出的方式比較容易。但如果你很好奇:http://stackoverflow.com/a/14001136/340760 – BrunoLM
它應該是'interface Array
如果模塊是外部的,則不起作用。 –
從打字稿1.6,你可以在「原生地」延長像內置類型的任意表達式。
打字稿1.6增加了對延伸的計算一個構造函數任意表達式 類的支持。這意味着現在可以在類聲明中擴展內置類型 。
該類的擴展子句先前需要指定的類型引用爲 。它現在接受一個表達式,可選的後跟一個 類型參數列表。表達式的類型必須是一個構造函數 函數類型,其中至少有一個構造體簽名的 數類型參數與 extends子句中指定的類型參數數相同。匹配結構 簽名的返回類型是類實例類型 繼承的基本類型。實際上,這允許在extends子句中指定真實類和「類」 表達式。
// Extend built-in types
class MyArray extends Array<number> { }
class MyError extends Error { }
// Extend computed base class
class ThingA {
getGreeting() { return "Hello from A"; }
}
class ThingB {
getGreeting() { return "Hello from B"; }
}
interface Greeter {
getGreeting(): string;
}
interface GreeterConstructor {
new(): Greeter;
}
function getGreeterBase(): GreeterConstructor {
return Math.random() >= 0.5 ? ThingA : ThingB;
}
class Test extends getGreeterBase() {
sayHello() {
console.log(this.getGreeting());
}
}
這會導致問題,因爲'[]'操作符無法按預期運行。 http://stackoverflow.com/questions/33947854/class-extended-from-built-in-array-in-typescript-1-6-2-does-not-update-length-wh –
@AndrewShepherd非常好的捕獲。 – Alex
declare global
似乎是票據爲打字稿2.1。請注意,Array.prototype
的類型爲any[]
,因此如果您希望檢查函數實現的一致性,最好自己添加一個泛型類型參數。
declare global {
interface Array<T> {
remove(elem: T): Array<T>;
}
}
if (!Array.prototype.remove) {
Array.prototype.remove = function<T>(elem: T): T[] {
return this.filter(e => e !== elem);
}
}
class MyArray<T> extends Array<T> {
remove: (elem: T) => Array<T> = function(elem: T) {
return this.filter(e => e !== elem);
}
}
let myArr = new MyArray<string>();
myArr.remove("some");
這對我的作品與打字稿V2.2.1!
- 1. 從TypeScript擴展數組
- 2. TypeScript - 數組排序擴展方法
- 3. 在TypeScript中擴展HTMLElement
- 4. 在TypeScript中擴展數據對象
- 5. 如何在TypeScript中擴展JQuery函數
- 6. 在Typescript中擴展通用參數
- 7. TypeScript 2.1+ tsconfig擴展
- 8. 在JSX中擴展數組
- 9. 在Typescript中擴展生成器
- 10. 在TypeScript中擴展AngularJS $資源工廠
- 11. 在AngularJS中擴展工廠TypeScript
- 12. 在Typescript中擴展抽象類
- 13. 可以在Typescript中擴展類型嗎?
- 14. 在TypeScript中擴展不覆蓋模塊
- 15. 可能在TypeScript中擴展JQueryEventObject
- 16. 在TypeScript中如何進行擴展?
- 17. 在TypeScript中擴展Kendo UI窗口
- 18. TypeScript + ES6 + .system.js + d.td +擴展
- 19. 如何擴展Typescript接口?
- 20. TypeScript:* .ts和* d.ts擴展
- 21. Typescript包含擴展方法
- 22. Typescript奇怪的行爲擴展數
- 23. Angular2 Typescript從數組修剪文件擴展
- 24. Typescript 0.9.5使用移動功能擴展數組原型
- 25. 使用John Resig擴展數組擴展
- 26. 用TypeScript中的裝飾器擴展類
- 27. 模塊中的TypeScript擴展對象
- 28. 擴展assoc數組
- 29. JavaScript擴展數組
- 30. JavaScript數組擴展
非常簡單的解決方案,我已經在這裏回答 - http://stackoverflow.com/questions/14867649/adding-a-property-to-array-in-typescript/33573875#33573875 – Vukasin