将参数传递给超类时出现打字稿错误。“扩展参数必须具有元组类型或传递给剩余参数(TS2556)。”

Jes*_*end 3 super spread jsdoc typescript

下面出现错误 TS2556,如何修复?

class Test {
    constructor(x: number) {}
}

class Test2 extends Test {
    constructor(...args) {
        super(...args); // TS2556
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用 jsdoc 和 tsc 进行类型检查:

class Test {
    constructor(x: number) {}
}

class Test2 extends Test {
    constructor(...args) {
        super(...args); // TS2556
    }
}
Run Code Online (Sandbox Code Playgroud)

Jes*_*end 12

使用ConstructorParameters<T>,如果你正在调用一个函数,你可以只使用Parameters<T>.

class Test {
    constructor(x: number) {}
}

class Test2 extends Test {
    constructor(...args: ConstructorParameters<typeof Test>) {
        super(...args);
    }
}
Run Code Online (Sandbox Code Playgroud)

或者对于 jsdoc:

class Test {
    constructor(x: number) {}
}

class Test2 extends Test {
    constructor(...args: ConstructorParameters<typeof Test>) {
        super(...args);
    }
}
Run Code Online (Sandbox Code Playgroud)