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

使用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,两者语法兼容度不匹配。

解决步骤:

  1. 卸载当前安装的date-fns:
npm uninstall date-fns
  1. 安装与TS 4.6兼容的date-fns稳定版本(推荐v2.29.3,这是最后一个支持低版本TS的分支):
npm install date-fns@2.29.3
  1. 重新编译测试代码:
tsc src/test_typescript.ts

完成后即可正常编译并输出格式化后的日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 02:30:01