是否可以让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类型检查的最佳方法的指导。
答案 0 :(得分:2)
是否可以让TypeScript编译器检查JavaScript文件foo.js是否与其自己的声明文件foo.d.ts一致
不是真的。 .js
文件几乎没有提供关于完全支持的内容的上下文。如果可能的话,我们就不需要TypeScript。