库附带的 TypeScript 声明文件使用较新 TypeScript 的功能的情况

Case when TypeScript declaration file shipped with a library uses features from newer TypeScript

从 TypeScript 2.0 开始,库的作者最好将 .d.ts 文件与库代码一起发送,因此当开发人员通过 npm 安装该库时,他们会同时获得库代码和TS 打字。

我的问题是:在某种情况下,当我使用 TS 2.0 并且为库 foo-bar.js 编写的类型使用较新 TS 版本的功能时怎么办?

我猜目前这不是问题,因为唯一稳定的 2.x 版本是 2.0。但是想象一下 TS 2.2 附带了一个新的 keyword/operator/type 支持并且库的作者开始在他们的代码附带的 .d.ts 文件中使用它。这会阻止我使用这些库,除非我在自己的项目中将 TS 升级到最新版本(防止 = 编译期间第三方 .d.ts 文件中的语法错误)吗?

这是一个很好的问题,很大程度上取决于 TS 工程师对向前兼容性的承诺程度。通常,在编写编译器时,工程师会努力实现向后兼容性,这意味着任何旧代码仍可由新编译器编译。同样,一般来说,较新版本的编译器可以 link 编辑较旧的库。

这是一般的经验法则,但有时编译器作者会出于好的(或坏的)原因破坏兼容性。

然而,作为另一个一般经验法则,向前兼容性并不是一个大问题。原因是如果您想要使用编译器的较新版本编译的代码(即 - .d.ts 文件),您应该使用新版本。此限制对于希望自由混合和匹配他们想要的任何库的用户不利,但对于希望在其编译代码中自由使用新功能的编译器作者不利。

TS的工程师总体上还是比较周到的,很有可能

因此,要回答您可能需要升级编译器才能link 由新编译器编译的库的问题,这是一个很长的路要走。