【发布时间】:2020-08-15 03:47:26
【问题描述】:
我正在寻找一种方法来扩展 Array 并将构造函数 args 传播到 super。
interface Token {
name: string
}
class Nodes extends Array {
constructor (v: Token[]) {
super(...v)
}
}
const n = new Nodes([{ name: 'Thomas ' }])
这给我带来了问题。这是playground link。
我也试过了:
interface Token {
name: string
}
class Nodes extends Array {
constructor (v: Token[]) {
super()
this.push(...v)
Object.setPrototypeOf(this, Object.create(Nodes.prototype));
}
}
const n = new Nodes([{ name: 'Thomas ' }])
console.log(n)
n.map(v => console.log(v.name))
未捕获的类型错误:发现不可调用的@@iterator 在新节点(eval at (main-3.js:1239), :5:14) 在节点.map() 在评估(评估在(main-3.js:1239),:11:3) 在 main-3.js:1239
【问题讨论】:
-
如果我没有抓住重点,请原谅我,但
Array需要一个整数作为其构造函数参数,看起来您正试图传入...Token[]。
标签: arrays typescript class extends