再见 Typescript,你好 Javascript 原生类型✨
打字。无论你喜欢还是讨厌,它都有很多优点:更好的 DX(通过智能感知自动完成)、更清晰的代码文档、更少的耗时错误。它的好处远远超过了它的成本,那么为什么有些人仍然避免使用它呢?答案只有一个:Typescript。你必须设置它并确保你的工具正常工作,这可能会给任何项目增添一层挫败感。
那么,如果我告诉你原生类型可能会出现在 JavaScript 中呢?圣诞节就要到了,我有一份礼物给你🎅
提案📄
TC39 是负责 JavaScript 规范的委员会——他们帮助维护和发展 JS 的定义。如果你感兴趣的话,我在之前的文章中专门写了一节关于他们的内容。
他们最近将类型注解提案移到了第一阶段(共四个阶段),这意味着是时候广泛探讨这项功能的影响和含义了!
尽管我喜欢戏剧化,但这绝不意味着TS 的消亡,它只是为那些不打算使用 TS 或希望同时使用两者的项目提供更清洁、更可靠的 JS 代码。
如果该提案通过,原生 JS 类型将会是什么样子?
它与我们目前使用的 Typescript 和 Flow 非常接近,即:
// both parameters are numbers, and this method returns a number
function add(a: number, b: number): number {
return a + b;
}
这些注解不会阻止您传递字符串或任何其他类型的变量作为参数。它们在运行时会被忽略,仅作为指导原则,供第三方类型检查器(例如您的 IDE)使用。
我认为,严格类型论证在本次讨论中是有其地位的。在目前的提案中,这些类型只是类型注解,这多亏了 JSDoc,我们已经拥有了。所以问题仍然存在:为什么?
这有什么意义?🤷
我们处境很奇怪:JavaScript 是少数需要我们用一种语言(Typescript)编写,然后再将其转换为另一种语言(JavaScript)的语言之一。这些层级结构会增加任何项目的复杂性,因此,我们在默认工具带中添加的工具越多越好。
对 Typescript 的需求导致现有工具出现垄断,所有工具都需要与 Typescript 同步演进,才能不被时代甩在身后。2022年 10 月的《State of the Octoverse》报告显示,Typescript 在 2022 年将迎来惊人的流行度,这意味着 Typescript 的演进对于你的 Linter、打包工具等来说几乎是强制性的。
将此功能与我们亲爱的 Javascript 捆绑在一起只会使其成为一个更完整的包,并帮助我们减缓我们目前面临的明显的工具膨胀问题。
您觉得怎么样?如果这个功能发布,您会使用它吗?如果您是 Typescript 的忠实用户,您会想到哪些风险?
欢迎在Twitter上关注我(如果你读完这篇文章时我的 Twitter 还没有崩溃的话),和你们中的一些人联系总是一件很愉快的事 😄
文章来源:https://dev.to/christopherkade/goodbye-typescript-hello-native-typing-for-javascript-3ee1