TypeScript 7.1 进入 Beta。语言层面的改动不大,但有一处对实际工程很有用:环境模块声明现在可以匹配导入属性。
问题背景
ECMAScript 的导入属性语法允许你写 import data from ./x.json with ,用来告诉运行时这个模块该怎么解析。但 TypeScript 的环境声明长期只能按模块路径匹配,写 declare module 星号通配时,无法区分同一个路径下以不同 type 导入的情况。结果就是你在代码里用 with 语法导入文本资源,类型系统要么报错,要么退化成 any。
7.1 让声明可以带上属性条件,意味着 declare module 后面可以限定 type 是 text 还是 json。这对大量使用资源导入的构建配置是实打实的改善,尤其是那些靠自定义 loader 把 .md、.txt、.graphql 当模块导入的项目。
为什么这类小改动重要
TypeScript 的版本迭代里,真正影响日常的不是每次的大特性,而是这种「让类型系统和运行时行为对齐」的修补。不对齐的地方会持续产生噪音:报错是假的、类型是 any、只能靠 as 强转绕过。每一个这样的缝隙都在消耗团队对类型的信任。
升级建议
7.1 还是 Beta,生产项目别急。但可以开始做两件事:一是检查项目里有没有大量 as any 出现在资源导入处,这些就是升级后能清掉的债;二是确认 tsconfig 里 module 与 moduleResolution 的配置是否已经支持导入属性,配置不对的话语言特性再新也用不上。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。