TypeError: t.printEleis not a fu
2020-01-20 本文已影响0人
前端老邹_伯通
- 在 TS 中 继承 Array ,并添加自定义方法:
class MyArray extends Array {
constructor() {
super();
}
public printEle(): void {
for (let i = 0; i < this.length; i++) {
console.log(this[i]);
}
}
}
let t = new MyArray();
t.push(1, 2, 3);
t.printEle();
- 运行时 会报错
TypeError: t.printEleis not a function
- 解决方案:在 TS 中 继承 Array 或 Error,需要在【构造函数】中 修改 注册 【当前类的 原型】
class MyArray extends Array {
constructor() {
super();
// 注册 MyArray类的原型
Object.setPrototypeOf(this, MyArray.prototype)
}
public printEle(): void {
for (let i = 0; i < this.length; i++) {
console.log(this[i]);
}
}
}
let t = new MyArray();
t.push(1, 2, 3);
t.printEle();
参考:https://blog.simontest.net/extend-array-with-typescript-965cc1134b3