创建新的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[]'.
我这么想吗?
@索尼,有什么建议吗?见上面更新的部分。 –