使用Node.js模块date-fns时出现TypeScript编译错误TS1005如何解决?
解决date-fns与TypeScript版本不兼容导致的TS1005错误
问题背景
- 系统环境:
- Angular CLI: 13.2.0
- Node: 16.13.2
- npm: 8.6.0
- OS: linux x64
- 已执行
npm install date-fns安装date-fns模块 - 测试代码(
src/test_typescript.ts):
import { format } from 'date-fns'; const currentDate: Date = new Date(); const formattedDate: string = format(currentDate, 'dd/MM/yyyy HH:mm'); console.log(formattedDate);
- 执行
tsc src/test_typescript.ts编译时触发TS1005错误:
node_modules/date-fns/clamp.d.ts:18:59 - error TS1005: '?' expected.
18 Options extends ClampOptions
~node_modules/date-fns/closestTo.d.ts:18:63 - error TS1005: '?' expected.
18 Options extends ClosestToOptions
~node_modules/date-fns/interval.d.ts:21:62 - error TS1005: '?' expected.
21 Options extends IntervalOptions
~
Found 3 errors.
原因及解决办法
错误根源是你安装的最新版date-fns使用了TypeScript 4.7+才支持的infer类型约束语法,而Angular 13配套的TypeScript版本是4.6.x,两者语法兼容度不匹配。
解决步骤:
- 卸载当前安装的date-fns:
npm uninstall date-fns
- 安装与TS 4.6兼容的date-fns稳定版本(推荐v2.29.3,这是最后一个支持低版本TS的分支):
npm install date-fns@2.29.3
- 重新编译测试代码:
tsc src/test_typescript.ts
完成后即可正常编译并输出格式化后的日期。
内容的提问来源于stack exchange,提问作者User051209
相关产品推荐
相关产品推荐

