什么情况下,你应该使用TypeScript?(上)
极客时间编辑部
讲述:初明明大小:4.62M时长:05:03
你好,欢迎收听极客视点。
TypeScript 是近年来颇受欢迎的一种语言。此前,开发者哈利勒·斯坦姆勒(Khalil Stemmler)发文探讨了在什么情况下绝对应该使用 TypeScript 这种类型严格的编程语言,又在什么情况下应该继续使用原生的 JavaScript。公众号“前端之巅”编译了该文章,重点内容如下。
首先思考一下为什么现在迫切需要探讨这个话题呢?
根据你的环境、项目、技能水平和其他因素而言,如果你的项目不使用 TypeScript 编写,可能会是非常危险的。
前端领域正在变得越来越复杂。很多特性曾经被认为是前沿技术,现在已经成为许多标准化的用户体验基础。例如,用户都希望你的应用在脱机状态下也能有一部分功能可用,而且当用户在线时,通常也会希望自己无需刷新页面即可获取实时通知。
这些要求是非常苛刻的,但今天来说也绝对不是什么不可能完成的任务。
在深入研究不同的场景之前,我们应该先讨论一下三类非常困难的软件问题:性能系统问题、嵌入式系统问题和复杂领域问题。
1. 性能系统问题
以 Twitter 为例,Twitter 实际上是一个非常简单的概念,用户注册,发表推文,给其他人的推文点赞,仅此而已。
既然 Twitter 这么简单,为什么其他人不能仿造一个呢?
显然,Twitter 的真正挑战不只是“做什么事情”,而是“如何做到这些事情”。
Twitter 面临着一个独特的挑战,那就是每天要满足来自大约 5 亿用户的请求,它解决的难题实际上是一个性能问题。
当挑战在于性能时,是否使用严格类型的语言就不那么重要了。
2. 嵌入式系统问题
嵌入式系统是计算机硬件和软件的组合,其目的是控制系统的机械或电气部分。
我们今天使用的大多数系统都是建立在非常复杂的代码层之上的,这些代码要么是 C 或 C++,要么就是能编译为这两种语言。
用这些代码编程可不是一般人随便能做的事情。在 C 语言中没有对象,它是程序性的,所以我们想要用它编写出简洁的代码就很困难。程序员还需要了解底层细节才能解决很多问题。C++ 确实具有面向对象的特性,能明显改善开发体验,但还是需要程序员与底层硬件细节进行直接交互。
因为这些场景中能使用的语言实际上没有太多选择,所以在这里讨论 TypeScript 也没什么意义。
3. 复杂领域问题
对于某些场景来说,程序员面临的挑战不是要处理大量请求,而是扩展代码库的大小。
很多企业需要解决现实生活中的一些很复杂问题。在这些公司中,最大的工程挑战通常是:
能够在逻辑层面(通过域)将单体组件分解成许多较小的应用。然后在物理层面将它们拆分开来,并分配给多个团队来维护。
处理这些应用之间的集成和同步需求。
建模领域概念并实际解决领域问题。
创建一种通用的(全包含)语言,以供开发人员和领域专家共享。
不会陷在规模庞大的代码泥潭中,也不会沦落到想添加新功能就一定要破坏已有功能的地步。
对于领域驱动设计所解决的问题类型的项目来说,你会毫不犹豫地使用像 TypeScript 这样的严格类型的语言。
对于复杂领域问题来说,如果你不选择 TypeScript,而是选择 JavaScript,则需要付出更多的努力才能成功。你不仅需要特别熟悉原生 JavaScript 中的对象建模能力,而且还必须知道如何利用面向对象编程的 4 个原理,即封装、抽象、继承和多态。
使用原生 JavaScript 很难实现 SOLID 设计原则中的“界面隔离”。
为了保持代码的整洁,单独使用 JavaScript 时还需要一定程度的开发人员纪律,这在代码库非常大时是至关重要的。你还需要确保你的团队成员拥有相同的学科、经验和知识水平,知道如何在 JavaScript 中实现常见的设计模式。否则的话你还需要指导他们才行。
在像这样的领域驱动项目中,使用严格类型语言的最大好处不在于表达可以做的那些事情,而更多的是使用封装和信息隐藏来限制程序员,告诉他们哪些领域对象才是可以使用的,从而减少错误的暴露面。
将 TypeScript 称为“可扩展的 JavaScript”是有原因的。
在所有三类软硬件问题中,只有复杂领域问题是一定要使用 TypeScript 的领域。
除此之外,还有其他一些因素可能会影响你的决策,让你知道什么时候应该在 JavaScript 项目中使用 TypeScript。这将在下文继续分享,欢迎持续关注。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论