我正在尝试创建一个类的实例,但编译时错误是:
无法创建抽象类'QueueProcess'的实例。
但是,我没有创建它的实例,我正在创建一个扩展QueueProcess
的类的实例。那么,为什么我会收到此错误?
export class Queue<T extends QueueProcess> {
private _queue: T[] = []
private async runFirstProcess() {
let process = new this._queue[0]
}
}
export abstract class QueueProcess {
}
编译后的代码运行正常,只是抛出编译时错误。
答案 0 :(得分:4)
因此,首先,行T extends QueueProcess
意味着T是QueueProcess的实例,它不会是新的。要访问构造函数类型,您需要T extends typeof QueueProcess
。
但是这无论如何都行不通,因为QueueProcess本身扩展了QueueProcess,并且因为它是抽象的,所以typescript会抱怨这一点。因此,使T扩展一个返回QueueProcess的新函数,例如:
export class Queue<T extends new () => QueueProcess> {
private _queue: T[] = []
private async runFirstProcess() {
let process = new this._queue[0]()
}
}
export abstract class QueueProcess {
}
答案 1 :(得分:-1)
为了满足代码分析器,我重写了一段代码。它被放置here。但是,您的代码与new this._queue[0]
存在问题。此外,在当前之后放置的类是一个坏主意。
结果代码是
export abstract class QueueProcess {
}
export class Queue<T> extends QueueProcess {
private _queue: T[] = []
private async runFirstProcess() {
let process = new this._queue[0]
}
}