javascript - JSDoc + IDE 与 TypeScript

标签 javascript typescript ide jsdoc

前提
通过正确维护的 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/

相关文章:

javascript - jQuery 链接不起作用

typescript - 如果 npm 或 yarn 存在于 Typescript 项目中,它们是否具有自动安装 @types 的功能?

typescript - 为什么类型检查器不返回这个可索引类型的错误?

javascript - 如何在动态生成的 input-angularjs 中显示动态 Json 数据?

javascript - 如何让函数等待 ajax 调用返回一个值,然后再返回 true 或 false?

node.js - 如何在 typescript 中使用 yargs 解析命令行参数

java - 无法更新 R.java 文件以添加新对象?

c# - 如何在 Scintilla 中突出显示文本?

php - 如何在 Eclipse 中使用 PHPdoc

javascript - 使用 Ramda 执行子数组的函数式方法