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

Jan*_*sky 6 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 声明一致。

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

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

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

bas*_*rat 1

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

并不真地。文件几乎没有提供有关支持和不支持的具体.js内容的上下文。如果可能的话,我们就不需要 TypeScript。

更多的

  • 我不确定我是否理解这一点。JavaScript 在类型方面不明确,但我可以在“foo.js”中编写 jsDoc 注释,精确定义该文件中函数的联系。TypeScript 编译器将验证代码是否符合这些约定。我可以将这些相同的 jsDoc 注释提取到“foo.d.ts”中,以不同的形式提供相同的约定定义,从而允许更大程度的表达。将这些声明应用于文件本身似乎是一个有效的用例 - 实现与 jsDoc 注释当前允许的相同级别的类型安全性,甚至更好。 (2认同)