export class Path extends Array {
constructor(...params:Array<any>) {
super(...Object.assign([], arguments));
}
until (node) {
let pos = this.findIndex(element => node === element);
return pos < 0 ? [] : this.splice(0, pos + 1);
}
get last () {
return this.length ? this[this.length - 1] : undefined;
}
}
当我从我的打字稿代码中调用它时,它会被初始化,但是这些方法都没有做任何事情:
path = new Path(1,2,3,4); // [1,2,3,4]
path.last; // undefined
path.until(3); // undefined
当然,如果我做了类似的事情,那就是#34;正常&#34; typescript类,又名不扩展Array的类,它工作得很好,又名
export class Bla {
values = [];
constructor(...params:Array<any>) {
this.values = new Array(...Object.assign([], arguments));
}
until (node) {
let pos = this.values.findIndex(element => node === element);
return pos < 0 ? [] : this.values.splice(0, pos + 1);
}
get last () {
return this.values.length ? this.values[this.values.length - 1] : undefined;
}
}
结果:
bla = new Bla(1,2,3,4); // {values: [1,2,3,4]}
bla.last; // 4
bla.until(3) // [1,2,3]
它也应该。
最后,如果我将上面的Path代码粘贴到Chrome的开发控制台(没有ts类型
),那就更加侮辱伤害并使问题更加混乱...params:Array<any>
和出口,当然),一切都很好:
path = new Path(1,2,3,4); // [1,2,3,4]
path.last; // 4
path.until(3) // [1,2,3]
那么,我在这里找不到什么难以理解的打字稿?