发布于 2026-01-05 4 阅读
0

要不要用 TypeScript?为什么 IEEE-754 认定 NaN != NaN,尽管这在逻辑上是不成立的?

要不要用 TypeScript?

为什么 IEEE-754 认定 NaN != NaN,尽管这在逻辑上是不成立的?

在我之前的文章中,一位读者提出了一些反对 TypeScript 的非常好的观点,并在评论区引发了相当长的讨论。因此,我想做最后的比较。

TypeScript 的优势

  1. 严格打字

变量一旦声明,就只能采用一种类型,并且只能取特定的值。编译器会提醒开发者注意类型相关的错误,从而避免这些错误进入生产阶段。这可以减少代码中的错误,提高开发者的工作效率。

例如,当我们对参数调用字符串特定方法时,无需添加检查,if因为如果传递了不同类型的值,TypeScript 会抛出错误。

但静态类型不仅仅是为了捕获错误。它还能使代码结构更清晰,更具自文档性和可读性,并加快调试和重构速度。

值得注意的是,TypeScript 并非强制要求在所有地方都声明类型。开发者可以自由地在项目的不同部分调整类型严格程度。这种方式使 TypeScript 区别于其他静态类型语言,并允许开发者在灵活性和正确性之间找到合适的平衡点。此外,由于无需转换整个代码库即可编译,因此将 JavaScript 代码迁移到 TypeScript 也变得更加容易。

使用 TypeScript,所有变量都会保持其最初定义时的状态。如果一个变量被声明为字符串,它就始终是字符串类型,而不会变成布尔值。这大大提高了函数按预期运行的可能性。

  1. 早期发现的昆虫

研究人员发现,TypeScript 可以在编译阶段检测到 15% 的常见错误。虽然远未达到 100% 的检测率,但这个比例仍然相当可观,足以节省开发人员的时间,让他们专注于修正逻辑错误,而不是费力地查找常见错误。此外,通过编译器编译代码还能减少质量保证和测试工作量。

  1. VS Code 自动补全功能
    很棒!VS Code 本身就拥有出色的 JavaScript 自动补全功能,而 TypeScript 的加入更是锦上添花。此外,如果我们使用外部第三方库,可以直接查看类型定义,这比查阅文档要快得多(有些库的文档并不完善)。

  2. 除了普通的 JavaScript功能
    之外,TypeScript 还具有一些 JavaScript 所没有的特性。例如,`type` public、` type`privateprotected字段,Generics这有助于我们创建相当复杂的动态类型;`Nullish Coalescing( ??)` 等;以及abstract类。

  3. 人气

TypeScript 在 NPM 上的每周下载量超过 1900 万次:

屏幕截图 2021-07-27 15.09.56

接下来,我们来看一下js 现状的2020 年调查,这是最受欢迎的 Javascript 调查之一。

多年来各种JS版本的流行程度:
![截图]屏幕截图 2021-07-27 15.17.31

喜欢/不喜欢 TypeScript 的人数百分比:

2021年7月27日 15:16:31

随着时间推移的经验:

屏幕截图 2021-07-27 15.21.25

根据[2020 年 Stack Overflow 调查],TypeScript 是第二受欢迎的编程语言,甚至超过了 Python!(https://insights.stackoverflow.com/survey/2020)

屏幕截图 2021-07-27 15.24.45

当然,这些都只是数字。受欢迎程度并不一定意味着某样东西质量高、值得信赖。幸运的是,TypeScript 也得到了科技界一些真正实力雄厚的厂商的支持。

TypeScript 语言广泛应用于 Slack、Medium、Asana 和 Visual Studio Code 等软件产品中。此外,许多优秀的 JavaScript 工具都是用 TypeScript 编写的,包括框架(Angular、Ionic 等)和库(ZoomCharts、yWorks 和 GoJS)。

似乎这还不够,像微软(废话!)、JetBrains、eBay、爱立信、Airbnb 或育碧这样的科技巨头都公开表示使用 TypeScript——谁知道还有多少其他企业级公司已经将其纳入了他们的技术栈中。

TypeScript 的缺点

  1. 额外阶段——转译
    反对 TypeScript 的一个主要论点是它需要编译,而 JavaScript 不需要。但说实话,如今大多数 JavaScript 应用都需要构建步骤。无论是 Gulp、Grunt、Webpack、Rollup、Babel 还是 Closure,构建步骤都是必要的,而且也没有什么能阻止你扩展它的功能。


  2. 为了充分利用 TypeScript 的特性,我们需要创建一些额外的代码typesinterfaces例如 `<type>` 等。在时间紧迫的情况下,这可能会造成不必要的延误。然而,从长远来看,这将节省我们大量时间,因为新开发人员理解代码库所需的时间会大大减少。

  3. 学习曲线:
    尽管 TypeScript 与 JavaScript 类似,但仍然需要学习一些知识才能正确理解代码。

结论

我认为这很主观,作为一个喜欢自动补全、代码可读性和语法糖(以及经常引入 bug 的人😅)的人,TypeScript 对我来说是显而易见的选择。但是,在时间紧迫的情况下,原生 JavaScript 会更好。

如果你喜欢这篇文章,别忘了点赞并关注我在 dev.to 和Twitter上的账号,我会尽量定期发布 JavaScript/TypeScript 的使用技巧。拜拜🤟

文章来源:https://dev.to/akashshyam/to-typescript-or-to-not-3ad0