TypeScript对Temporal API的支持相关技术疑问
咱把这个问题拆成类型检查和运行执行两个角度来唠,这样更容易搞明白:
先聊TypeScript的类型支持部分:
要是你用的TypeScript版本偏老,它内部还没自带Temporal API的类型定义,这时候你直接写Temporal.Now.plainDateTimeISO()这类代码,TS会给你报“找不到名称'Temporal'”的类型错误。这种情况不用慌,你有两个选择:要么把TypeScript升级到5.2及以上版本(这个版本开始就内置了Temporal的完整类型支持);要么不升级TS,手动装个对应的类型包补全类型,比如运行npm install --save-dev @types/temporal-polyfill,装完TS就能识别Temporal的各种类型了。再说说代码能不能跑起来的问题:
不管你用的TS是啥版本,最终编译后的JS代码要正常运行,核心还是看你的目标环境(比如Node.js、Chrome、Deno这些)本身支不支持Temporal API。如果环境已经原生支持(比如Node.js 20及以上、Chrome 115及以上),那编译后的代码直接就能跑;要是环境不支持,那你得引入Temporal的polyfill包(比如@js-temporal/polyfill),在代码开头先加载这个polyfill,旧环境也能兼容运行。
总结下哈:不是必须升级TypeScript才能用Temporal API,但要让TS不报错,要么升级TS到支持的版本,要么补个类型包;而代码能不能真正跑起来,得看目标环境的支持度,或者加polyfill兜底。
备注:内容来源于stack exchange,提问作者Mike

