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

TypeScript 4.7.3出现“Function不是构造函数类型”错误求助

解决TypeScript类装饰器中“Type Function不是构造函数类型”的错误
  • 问题原因:你将装饰器的target参数类型定义为Function,但TypeScript新版本对类装饰器的目标类型校验更严格——类装饰器的参数必须是构造函数类型,普通Function类型无法保证具备可被extends的构造函数特性。

  • 解决方案:把target的类型替换为构造函数类型new (...args: any[]) => any,该类型明确表示“可接受任意参数、返回任意实例的构造函数”,完全匹配类装饰器的目标要求。

修改后的代码:

const addFuelToRocket = (target: new (...args: any[]) => any) => {
  return class extends target {
    fuel = 100
  }
}
  • 额外配置检查:确保你的tsconfig.json已正确启用装饰器支持:
{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true // 可选,需元数据支持时开启
  }
}

你提到的“TS2.2以上不应出现此问题”,是因为TS2.2确实首次正式支持类装饰器,但早期版本的类型校验相对宽松;而你使用的4.7.3版本强化了类型安全性,因此需要更精确的类型定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:35:21