TypeScript可以验证.js文件是否与其自己的.d.ts声明一致吗?

时间:2017-05-23 22:32:45

标签: typescript

是否可以让TypeScript编译器检查JavaScript文件foo.js是否与其自己的声明文件foo.d.ts一致?

我们有一大堆JavaScript代码,出于各种原因,我们希望留下JavaScript。但是,如果可能的话,我们希望使用TypeScript来实现两个目标:1)确认我们自己的JavaScript代码是类型安全的,2)向有兴趣使用TypeScript的客户提供声明。

对于给定的JavaScript文件foo.js,我们可以创建相应的文件foo.d.ts以满足目标#2(支持TypeScript客户)。但据我们所知,foo.d.ts的存在不会导致foo.js的任何检查。也就是说,声明文件仅对foo.js的外部使用者感兴趣,并且编译器不会验证JavaScript代码是否与其自己的.d.ts声明一致。

我们已经尝试在foo.js中使用jsDoc类型注释,而TypeScript编译器确实验证该文件中的代码是否与那些声明的类型一致。这似乎满足目标#1(检查我们自己的代码)。

但是,jsDoc注释不如.d.ts声明文件中可能的完整TypeScript语法那么强大(例如,jsDoc对泛型的支持是基本的),这限制了我们可以使用它们的位置。此外,TypeScript编译器似乎没有提供jsDoc注释与.d.ts声明一致的任何验证。我们冒着这两种类型信息来源之间存在不一致的风险。

我们正在寻找关于在像这样的JavaScript项目的上下文中利用TypeScript类型检查的最佳方法的指导。

1 个答案:

答案 0 :(得分:2)

  

是否可以让TypeScript编译器检查JavaScript文件foo.js是否与其自己的声明文件foo.d.ts一致

不是真的。 .js文件几乎没有提供关于完全支持的内容的上下文。如果可能的话,我们就不需要TypeScript。

更多