TypeScript 7.0 的发布候选版已经出来了,而 7.1 beta 里的 content mappers 已经在社区里长出有意思的东西。
7.0 本身
这是原生移植那一代。官方的目标一直很清楚:让类型检查的速度跟上大型代码库的规模,而不是靠调 tsconfig 参数硬撑。
升级时最容易踩的是配置:module 与 moduleResolution 的组合决定了新特性能不能用。配置不对,特性再新也用不上,报错还会往类型系统上引,排查起来很绕。
content mappers 是什么
简单说,它让 TypeScript 能给非 TypeScript 的数据文件做类型推断。Zod 的作者用它做了两个东西:
Reylo,可以把 .sql 文件导入 TypeScript 并带完整类型推断。Motherload,对 TOML、YAML、CSV、Markdown front matter、.env 这些配置文件做同样的事,并给类型安全。
这个能力的实际价值
过去处理 SQL 查询结果,标准做法是手写 interface,或者用一个代码生成器跑一遍,生成完还得记得重跑。查询改了、字段改了,类型不会自动跟着变,运行时才发现对不上。
配置文件的类型安全更是长期空白。一个 YAML 里少写一个字段、多写一个层级,只能靠运行时校验或者祈祷。
把这两类都拉进类型系统,意味着编译期就能拦住一大批低级错误。
什么时候能用
7.1 还在 beta,生产项目别急着上。但可以开始规划:把散落的 interface 定义、把手工维护的配置类型,逐步迁移到这套机制上。迁移成本主要在整理,不在改写。
一句实话
类型系统每增强一层,都会带来新的学习成本。团队里如果没人真正理解这套东西,强行上只会让代码变得更难读。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。