TypeScript项目开发无错,构建时出现TS2554错误求助
TypeScript构建时出现TS2554错误的解决办法
问题现象
开发阶段无警告或编译错误,项目运行正常,但执行npm run build时,在Error构造函数调用处触发TS2554错误,提示:Expected 0 - 1 arguments, but got 2。
触发错误的代码:
throw Error('message', {cause: 'cause'})
相关类型定义:
ErrorConstructor:
ErrorConstructor (message?: string | undefined, options?: ErrorOptions | undefined) => Error (+1 overload)
ErrorOptions接口:
interface ErrorOptions { cause?: unknown; }
原因分析
- 调用方式差异:直接调用
Error()作为函数时,部分TypeScript版本或严格检查配置下,不支持传入第二个ErrorOptions参数;而使用new Error()构造函数形式时,该参数是合法的。 - 环境配置不一致:开发环境与构建环境的TypeScript版本不同,或
tsconfig.json中的检查规则(如strict模式)存在差异,导致开发阶段未触发类型检查错误,构建阶段才暴露问题。
解决方案
- 使用构造函数形式调用Error:将代码改为
throw new Error('message', {cause: 'cause'}),确保符合TypeScript对Error构造函数参数的类型定义。 - 统一环境配置:检查开发和构建环境的TypeScript版本,确保两者使用相同版本;同步
tsconfig.json中的检查规则,比如启用或关闭strict模式的设置保持一致。
内容的提问来源于stack exchange,提问作者Edgar
相关产品推荐
相关产品推荐

