前提
通过正确维护的 JSDoc,几乎所有现代 IDE 都可以识别类型不匹配(赋值、函数的签名/参数)以及非强类型语言引入的许多其他问题。
除此之外,现代 JS 还带有可预测的变量范围、无提升行为、模块化、内置类支持等等。
问题
In which scenario may TypeScript serve developer needs better than JS+JSDoc?
备注:我说的是这样的情况,其中对遗留 JS/浏览器的支持是强制性的,并且 TS + Babel 可以将现代代码库转换为一些遗留友好的环境。
最佳答案
我觉得这个比较有点奇怪。 JSDoc 是面向文档的,而 typescript 为 js 添加了可选的静态类型。这些工具确实有一些共同点,例如它们允许进行类型检查,但它们的目的不同。
这是一个有趣的问题。我想鼓励就这个话题进行讨论,所以我将谈谈我使用这些工具的经验。
我对 jsdoc 的主要问题是以下部分至关重要:
properly maintained JSDoc
jsdoc 对自动完成的有用性直接取决于 jsdoc 注释的工作量和质量。我发现很难在大型项目中执行。复杂的类型/接口(interface)也很难描述和维护,非常冗长。另一方面,Ts 比 jsdoc 简洁得多。
此外,ts 中的类型和接口(interface)是一等公民,而不仅仅是为了文档而添加的。它们是源代码中的实体,可以导出以供其他模块使用。在编译过程(和之前)中强制执行类型不匹配。还有像 generics 这样的机制。或 decorators , 随 ts 一起提供。
回到执行指南部分。使用 ESLint,您可以设置灵活的规则,允许您为您的类型微调限制/样式/指南。你想要严格的静态类型吗?还是你想要宽容?
如果需要,您可以强制执行您的确切需求并将其连接到 ci/cd。在我看来,在从事大型项目时,这是一个很大的好处。
工具也是一个重要因素,jsdoc 和 ts 都足够成熟,可以在它们周围建立生态系统。虽然在这个时间点jsdoc isn't an active project ,而 ts 非常受欢迎,并且周围有一个庞大的社区,并且有很多事件。
因此,这一切都取决于您的需求,如果您对 jsdoc 可以为您做的事情感到满意并且文档是您的主要关注点,那么 ts 不会为您做太多事情。
附言
Ts 和 jsdoc 不是相互排斥的。您可以同时拥有两者,尽管您可能想要切换到类似 TSDoc 的内容。
关于javascript - JSDoc + IDE 与 TypeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68421854/