如果有一个经过良好维护的JSDoc,几乎任何现代IDE都能识别类型不匹配(分配、函数签名/参数)以及非强类型语言引入的许多其他问题。除此之外,现代JS还具有可预测的变量作用域、无hoisting行为、模块化、内置类支持等功能。
在哪种情况下,TypeScript可能比JS + JSDoc更适合开发者的需求?
如果有一个经过良好维护的JSDoc,几乎任何现代IDE都能识别类型不匹配(分配、函数签名/参数)以及非强类型语言引入的许多其他问题。除此之外,现代JS还具有可预测的变量作用域、无hoisting行为、模块化、内置类支持等功能。
在哪种情况下,TypeScript可能比JS + JSDoc更适合开发者的需求?
我认为这个比较有点奇怪。JSDoc注重文档编写,而typescript将可选的静态类型添加到js中。这些工具确实有一些共同点,例如它们都可以进行类型检查,但它们的目的是不同的。
不过,这是一个有趣的问题。我希望能够鼓励讨论这个话题,所以我会从自己使用这些工具的经验谈起。
我对jsdoc的主要问题在于以下部分至关重要:
适当维护的JSDoc
jsdoc用于自动完成的有用性直接取决于jsdoc注释的质量和付出的努力。我发现很难在大型项目中执行。复杂的类型/接口也很难描述和维护,非常冗长。另一方面,Ts比jsdoc更为简洁。
此外,ts中的类型和接口是一等公民,而不仅仅是为了文档而添加的。它们是源代码中的实体,可以导出给其他模块使用。类型不匹配在编译过程(以及之前)被强制执行。还有泛型或装饰器等机制,这些都是ts提供的。所以最终取决于你的需求,如果你对 jsdoc 能够为你做的事情感到满意,并且文档是你的主要关注点,那么 TypeScript 对你可能没有太大帮助。
P.S. TypeScript 和 jsdoc 并不是互斥的。你可以同时使用两者,尽管你可能想切换到类似 TSDoc 的东西。
各种Js编译器,如Typescript和Closure,正式支持使用JSDoc进行类型检查https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html
如果您想对Js源代码进行类型检查,这是一个有效的选项。