You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript向super传展开参数报TS2556错误如何解决?

TS2556 报错解决方案(super传参触发场景)

错误原因

该报错的核心原因是:你在子类构造函数中展开传递的args没有明确的类型约束,TypeScript默认将其推导为any[]类型,而any[]既不是和父类构造函数入参匹配的固定长度元组,也不满足rest参数的类型要求,因此触发校验失败。

TypeScript 原生开发场景修复方案

推荐直接使用TS内置的ConstructorParameters工具类型提取父类构造函数的入参类型,无需手动重复声明参数:

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

class Test2 extends Test {
    // 直接复用父类构造函数的参数类型元组
    constructor(...args: ConstructorParameters<typeof Test>) {
        super(...args); // 报错消失
    }
}

如果需要手动声明类型,也可以直接定义和父类入参一致的元组类型:

constructor(...args: [number]) {
  super(...args);
}

JSDoc 配合TSC类型检查场景修复方案

同样可以在JSDoc中使用ConstructorParameters类型约束参数:

class Test {
    /**
     * @param {number} x
     */
    constructor(x) {}
}

class Test2 extends Test {
    /**
     * @param {ConstructorParameters<typeof Test>} args
     */
    constructor(...args) {
        super(...args); // 报错消失
    }
}

内容的提问来源于stack exchange,提问作者Jespertheend

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:15:01