JSDoc + IDE与TypeScript的比较

14

如果有一个经过良好维护的JSDoc,几乎任何现代IDE都能识别类型不匹配(分配、函数签名/参数)以及非强类型语言引入的许多其他问题。除此之外,现代JS还具有可预测的变量作用域、无hoisting行为、模块化、内置类支持等功能。

在哪种情况下,TypeScript可能比JS + JSDoc更适合开发者的需求?


1
JSDoc似乎能够模拟TypeScript的功能,然而在代码中有太多注释会导致代码难以阅读。 - Panagiotis Bougioukos
1
@Boug,JSDoc类型可以在单独的JSDoc字典中定义,而在代码本身中只会出现引用,就像JavaDoc一样,被认为是一种标准。 - Mike
2
我可以很容易地在JSDoc中无意中说谎。TS使我必须更有目的地撒谎,比如说“我比你更懂TS,这绝对是一个数字,我不在乎你的想法”。而JSDoc则相反,你必须始终说明某个东西是什么。 - zero298
@zero298,谢谢,那是一个好观点。不幸的是,有3个人认为这个问题太笼统了,所以关闭了它。 - Mike
1
我已经试图让问题更清晰明了。"注释"混淆了原来的问题,而实际问题则以不同措辞重复问了两次。 - Kamafeather
1
我投票支持重新开放,看看你能否进一步改进它。 - Kamafeather
2个回答

8

我认为这个比较有点奇怪。JSDoc注重文档编写,而typescript将可选的静态类型添加到js中。这些工具确实有一些共同点,例如它们都可以进行类型检查,但它们的目的是不同的。

不过,这是一个有趣的问题。我希望能够鼓励讨论这个话题,所以我会从自己使用这些工具的经验谈起。

我对jsdoc的主要问题在于以下部分至关重要:

适当维护的JSDoc

jsdoc用于自动完成的有用性直接取决于jsdoc注释的质量和付出的努力。我发现很难在大型项目中执行。复杂的类型/接口也很难描述和维护,非常冗长。另一方面,Ts比jsdoc更为简洁。

此外,ts中的类型和接口是一等公民,而不仅仅是为了文档而添加的。它们是源代码中的实体,可以导出给其他模块使用。类型不匹配在编译过程(以及之前)被强制执行。还有泛型装饰器等机制,这些都是ts提供的。
回到强制指南部分。使用ESLint,您可以设置灵活的规则,以便为您的类型调整限制/样式/指南。您想要严格静态类型?还是你想要宽容?如果您愿意,您可以将其强制执行并连接到ci/cd。在我看来,这是在处理大型项目时的一个很大的优势。
工具也是一个重要因素,jsdoc和ts都已经成熟到拥有周围的生态系统。虽然现在jsdoc不是一个活跃的项目,但ts非常流行,并且有一个庞大的社区在其周围,有很多活动。

所以最终取决于你的需求,如果你对 jsdoc 能够为你做的事情感到满意,并且文档是你的主要关注点,那么 TypeScript 对你可能没有太大帮助。

P.S. TypeScript 和 jsdoc 并不是互斥的。你可以同时使用两者,尽管你可能想切换到类似 TSDoc 的东西。


-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接