为什么有些前端专家们开始放弃TypeScript?
TypeScript的胜利和意想不到的转折
开发者能够接受和掌握新工具的能力,即使一开始可能会遇到怀疑,也是他们专业能力的标志。TypeScript,JavaScript的超集,在近年来经历了显著的崛起,得到了广泛的采用,并成为现代Web开发的基本组成部分。
然而,最近的事件引起了开发者社区的关注,因为一些知名的开源项目,包括Svelte、Drizzle和Turbo,出人意料地决定放弃TypeScript,转而选择纯粹的原生JavaScript。
这一转变在开发者中引发了激烈的辩论,促使人们更加深入地审视这一离开背后的动机以及对JavaScript生态系统的潜在影响。
TypeScript的起源
要真正理解为什么一些开发者正在告别TypeScript,就必须追溯它从起初的谦逊开始到如今在Web开发领域的地位。2012年,微软推出了TypeScript作为一种开源语言。最初,TypeScript并没有引起开发社区的立即关注。这被视为一次有趣的实验,而不是一次革命性的飞跃。
JavaScript的生态系统已经充满了动态和弱类型语言,许多开发者对现状感到满意。
然而,TypeScript的转折点出现在Angular 2上,这是由谷歌开发的一种流行的Web应用框架,它大胆地决定将TypeScript作为其主要语言。
这个决定遭到了怀疑和抵抗,因为开发人员对于给JavaScript添加静态类型的想法感到困惑。然而,事实证明这是TypeScript历史上的一个关键时刻。Angular采用TypeScript作为催化剂,推动了TypeScript的发展。最初对其持怀疑态度的开发者开始看到静态类型、增强工具和更好的代码质量带来的好处。TypeScript开始受到关注,并迅速渗透到开发领域。
TypeScript的胜利和意想不到的转折
多年来,TypeScript取得了前所未有的成功。它的采用率不断上升,成为开发大型Web应用程序的关键工具。
它的好处是不可否认的:
类型安全性:TypeScript引入了静态类型,可以在编译时捕获类型相关的错误,而不是在运行时。这个特性显著提高了代码质量,减少了难以调试的问题的可能性。
工具支持:TypeScript提供了出色的工具支持,包括自动完成、重构和智能代码导航等功能。这使得开发人员更加高效,并减少了调试时间。
可扩展性:在大型项目中,TypeScript的类型系统被证明对于维护代码库非常宝贵,使得理解、重构和扩展现有代码变得更加容易。
社区和生态系统:TypeScript拥有一个充满活力和活跃的社区,为与TypeScript兼容的库、框架和工具的增长做出了贡献。
然而,就在TypeScript似乎已经确立了其不可或缺的地位时,开发社区却目睹了一场意想不到的变故。
知名的开源项目,包括Svelte、Drizzle和Turbo,决定在他们的代码库中放弃使用TypeScript。澄清一下,这个决定并不意味着终端用户被禁止在这些库中使用TypeScript。相反,它意味着这些库本身将不再使用TypeScript进行开发。
探索背后的动机
这些发展中出现的关键问题是:
在体验了TypeScript的好处之后,开发人员怎么可能考虑回到原始的JavaScript呢?
“类型体操”案件
David Heinemeier Hansson,流行的Ruby on Rails框架的创造者,对一些项目为何告别TypeScript提供了深入的见解。
在Turbo版本8的情况下,主要原因并不是编译步骤,而是TypeScript引入的被认为是“类型体操”。
Hansson解释说,在他自己的库"Svelte Fire"上工作时,他遇到了一些情况,不得不进行这些"类型体操",以满足编译器的要求。
术语“类型体操”指的是开发人员为满足TypeScript的类型约束而执行的有时需要翻跟斗和复杂操作的技巧。
虽然可以使用“any”类型来抑制类型错误,但这种方法不符合可维护和高质量代码的标准。这可能会导致维护方面的挑战,并降低TypeScript带来的好处。
这个观点揭示了一些开发者在使用TypeScript时遇到的痛点之一。
尽管类型系统带来了实质性的好处,但也引入了复杂性,有时需要开发人员在复杂的类型层次结构中进行导航以实现他们的目标。
Svelte的实用主义
转向Svelte,他们与TypeScript分道扬镳的原因更加务实。
Svelte的创始人Rich Harris强调了他们决策的实用性。即将发布的Svelte 5将不再依赖于TypeScript。
此外,Svelte Kit,一个用于构建Web应用程序的框架,已经采用了纯粹的原生JavaScript。
这一转变的推动力是消除了编译步骤。在像Svelte Kit这样的大型框架中,这对提高生产力有着显著的推动作用。
移除TypeScript意味着在编译过程中减少了类型检查的需求,从而加快了构建时间并为开发人员提供更快的反馈。这是出于优化开发流程的务实决策。
然而,令Svelte的情况特别引人注目的是,他们通过使用JSDoc成功保留了大部分TypeScript的优势。
JSDoc是一种标准化的注释格式,可以使用普通的JavaScript注释来声明类型和文档。这些注释可以用来生成.d.ts文件,并在代码编辑器中提供智能感知,提供与TypeScript相同的好处。
这种方法使得Svelte在性能和类型安全之间取得了平衡。尽管他们放弃了TypeScript以提高编译时间,但他们保留了使用JSDoc注释为开发人员提供类型信息和文档的能力。
TypeScript的未来和持续的辩论
那么,一些知名项目最近对TypeScript的转变是否意味着它在JavaScript生态系统中的统治即将结束?答案并不简单。谈到使用Svelte Kit或Next.js等工具构建应用程序时,TypeScript仍然是开发过程中不可或缺的一部分。
TypeScript与这些工具的集成是无缝的,并且经过优化以提供最佳结果。试图用JSDoc和纯JavaScript复制这些结果可能是一项艰巨的任务。
然而,和解的曙光可能已经出现在地平线上。一个名为“可选静态类型”的ECMAScript第一阶段提案目前正在考虑中。如果获得批准,它将在JavaScript中本地引入可选类型注解,可能在某些情况下使TypeScript几乎过时。
这个提案在开发者社区引发了激烈的辩论。有人认为将可选类型注解纳入JavaScript本身可以实现更简化和统一的生态系统。它可以简化开发过程,减少转译的需求,并有可能消除TypeScript引入的一些复杂性。
另一方面,TypeScript的支持者认为,TypeScript提供了额外的功能和成熟的类型系统,超越了ECMAScript提案的目标。他们认为,TypeScript丰富的工具和库生态系统以及广泛的社区支持,提供了一种难以仅仅通过原生JavaScript特性复制的健壮性水平。
结束
最近一些知名项目对TypeScript的转变表明了Web开发领域中的一个微妙发展。这提醒我们,在不断变化的技术环境中,适应和实用主义往往决定开发者的选择。
TypeScript的发展历程,从其谦逊的起步到广泛的采用,一直伴随着热情和担忧。虽然它无可否认地在类型安全和工具支持方面带来了好处,但也面临着挑战,正如那些选择与之分道扬镳的开发者所强调的那样。
然而,在许多情况下,TypeScript的未来依然光明,特别是在静态类型和强大工具的优势至关重要的情况下。它仍然是构建复杂的网络应用程序的有价值工具,这些应用程序需要强大的类型保证和可维护性。
最终,使用TypeScript还是纯JavaScript的决定,最终取决于项目的具体要求和开发团队的偏好。TypeScript 在 Web 开发领域留下了深刻的印记,无论它是继续成为生态系统的基石还是让位于原生 JavaScript 特性,它无可否认地影响了开发者编写和组织代码的方式。
成为一名优秀的开发者意味着在项目目标和原则与之一致时接受变化,同时也意味着保持对新可能性的开放,即使这意味着告别一款曾经为我们服务良好的工具。在充满活力的网页开发世界中,适应性仍然是成功的关键。
由于文章内容篇幅有限,今天的内容就分享到这里,文章结尾,我想提醒您,文章的创作不易,如果您喜欢我的分享,请别忘了点赞和转发,让更多有需要的人看到。同时,如果您想获取更多前端技术的知识,欢迎关注我,您的支持将是我分享最大的动力。我会持续输出更多内容,敬请期待。