要不要用 TypeScript?
为什么 IEEE-754 认定 NaN != NaN,尽管这在逻辑上是不成立的?
在我之前的文章中,一位读者提出了一些反对 TypeScript 的非常好的观点,并在评论区引发了相当长的讨论。因此,我想做最后的比较。
TypeScript 的优势
- 严格打字
变量一旦声明,就只能采用一种类型,并且只能取特定的值。编译器会提醒开发者注意类型相关的错误,从而避免这些错误进入生产阶段。这可以减少代码中的错误,提高开发者的工作效率。
例如,当我们对参数调用字符串特定方法时,无需添加检查,if因为如果传递了不同类型的值,TypeScript 会抛出错误。
但静态类型不仅仅是为了捕获错误。它还能使代码结构更清晰,更具自文档性和可读性,并加快调试和重构速度。
值得注意的是,TypeScript 并非强制要求在所有地方都声明类型。开发者可以自由地在项目的不同部分调整类型严格程度。这种方式使 TypeScript 区别于其他静态类型语言,并允许开发者在灵活性和正确性之间找到合适的平衡点。此外,由于无需转换整个代码库即可编译,因此将 JavaScript 代码迁移到 TypeScript 也变得更加容易。
使用 TypeScript,所有变量都会保持其最初定义时的状态。如果一个变量被声明为字符串,它就始终是字符串类型,而不会变成布尔值。这大大提高了函数按预期运行的可能性。
- 早期发现的昆虫
研究人员发现,TypeScript 可以在编译阶段检测到 15% 的常见错误。虽然远未达到 100% 的检测率,但这个比例仍然相当可观,足以节省开发人员的时间,让他们专注于修正逻辑错误,而不是费力地查找常见错误。此外,通过编译器编译代码还能减少质量保证和测试工作量。
-
VS Code 自动补全功能
很棒!VS Code 本身就拥有出色的 JavaScript 自动补全功能,而 TypeScript 的加入更是锦上添花。此外,如果我们使用外部第三方库,可以直接查看类型定义,这比查阅文档要快得多(有些库的文档并不完善)。 -
除了普通的 JavaScript功能
之外,TypeScript 还具有一些 JavaScript 所没有的特性。例如,`type`public、` type`private和protected字段,Generics这有助于我们创建相当复杂的动态类型;`Nullish Coalescing(??)` 等;以及abstract类。 -
人气
TypeScript 在 NPM 上的每周下载量超过 1900 万次:
接下来,我们来看一下js 现状的2020 年调查,这是最受欢迎的 Javascript 调查之一。
喜欢/不喜欢 TypeScript 的人数百分比:
随着时间推移的经验:
根据[2020 年 Stack Overflow 调查],TypeScript 是第二受欢迎的编程语言,甚至超过了 Python!(https://insights.stackoverflow.com/survey/2020)
当然,这些都只是数字。受欢迎程度并不一定意味着某样东西质量高、值得信赖。幸运的是,TypeScript 也得到了科技界一些真正实力雄厚的厂商的支持。
TypeScript 语言广泛应用于 Slack、Medium、Asana 和 Visual Studio Code 等软件产品中。此外,许多优秀的 JavaScript 工具都是用 TypeScript 编写的,包括框架(Angular、Ionic 等)和库(ZoomCharts、yWorks 和 GoJS)。
似乎这还不够,像微软(废话!)、JetBrains、eBay、爱立信、Airbnb 或育碧这样的科技巨头都公开表示使用 TypeScript——谁知道还有多少其他企业级公司已经将其纳入了他们的技术栈中。
TypeScript 的缺点
-
额外阶段——转译
反对 TypeScript 的一个主要论点是它需要编译,而 JavaScript 不需要。但说实话,如今大多数 JavaScript 应用都需要构建步骤。无论是 Gulp、Grunt、Webpack、Rollup、Babel 还是 Closure,构建步骤都是必要的,而且也没有什么能阻止你扩展它的功能。 -
为了充分利用 TypeScript 的特性,我们需要创建一些额外的代码types,interfaces例如 `<type>` 等。在时间紧迫的情况下,这可能会造成不必要的延误。然而,从长远来看,这将节省我们大量时间,因为新开发人员理解代码库所需的时间会大大减少。 -
学习曲线:
尽管 TypeScript 与 JavaScript 类似,但仍然需要学习一些知识才能正确理解代码。
结论
我认为这很主观,作为一个喜欢自动补全、代码可读性和语法糖(以及经常引入 bug 的人😅)的人,TypeScript 对我来说是显而易见的选择。但是,在时间紧迫的情况下,原生 JavaScript 会更好。
如果你喜欢这篇文章,别忘了点赞并关注我在 dev.to 和Twitter上的账号,我会尽量定期发布 JavaScript/TypeScript 的使用技巧。拜拜🤟
文章来源:https://dev.to/akashshyam/to-typescript-or-to-not-3ad0




