創建新的Typescript數據類型我想通過擴展現有的Array
來創建新的數據類型。通過擴展現有的
這裏是一個擴展的例子:
interface Array<T> {
Count(): number;
}
Array.prototype.Count = function() {
return this.length;
}
令我擔心的是與現有的數據類型搞亂。有沒有辦法用新的數據類型創建一個新的數據類型的擴展名爲Array
?
例如,我們稱之爲List<T>
。其中List
是Array
與Count()
方法。
我已經看過Class List<T> extends Array<T>
但這不起作用。有什麼建議麼?
更新2016-04
有了新的更新,以打字稿,我給它一個鏡頭...
當前實現:
class List<T> extends Array<T> {
private _items: Array<T> = [];
constructor(items: Array<T>) {
super();
this._items = items;
}
public where(filter: any, ...arg): Array<T> {
return this._items.filter(item => filter(item, ...arg));
}
}
以下工作:
interface IItem {
name: string
}
let items = Array<IItem> = [];
// add few 'item's to items.
let list = new List<IItem>(items);
let filter = (item: IItem, name: string) => { return item.name === name };
let filteredList = list.where(filter, name);
想得到這個工作G:
let list = List<IItem> = [];
// add few 'item's to items.
let filter = (item: IItem, name: string) => { return item.name === name };
let filteredList = list.where(filter, name);
編譯器錯誤:
[ts] Type 'undefined[]' is not assignable to type 'List<IItem>'.
Property '_items' is missing in type 'undefined[]'.
我這麼想嗎?
@索尼,有什麼建議嗎?見上面更新的部分。 –