当前位置: 首页 > 科技观察

使用TypeScript的10个理由

时间:2023-03-16 01:09:15 科技观察

最近看了一篇《放弃 TypeScript 的 7 个非常好的理由》的文章,读的还蛮多的。有些观点确实很有趣,但在这里我将向您介绍使用TypeScript的10个理由。TypeScript降低了代码错误的风险。开发者写BUG是天经地义的。几乎一半的时间,我们都在寻找程序错误的原因。在JavaScript中,原因可能与类型错误一样简单。例如,为字符串变量赋值在JavaScript中运行良好,但在TypeScript中无法编译。JavaScript开发者长期以来一直被这个问题所困扰,甚至引入了严格模式(Strictmode)来减少这种错误。constgetLength=(someString:string)=>someString!=undefined?someString.length:0;lettestTS="what";testTS=3000;//Type'"what"'isnotassignabletotype'string'getLength(testTS);使用TypeScript,上面的代码不可编译,不会出现在最终代码库中。JavaScript不是这样。尽管TypeScript无法避免运行时类型错误,但它仍然可以有效降低这种风险。快速失败原则TypeScript在代码可以正常运行之前引入了一个新的强制性步骤:将代码转换为JavaScript。在编写新代码时,此步骤每天也会失败很多次。非静态类型的语言将失败和错误检测推迟到运行时。可空类型对于任何现代语言都非常重要,它有助于扩展代码。AdrianColyer在2017年写了一篇非常有趣的文章:QuantifyingDetectableErrorsinJavaScript。在文章的最后,你可以找到一个有趣的实验结果。Eric调查了JavaScript项目中的400个开放错误。通过使用TypeScript或Flow,可以有效捕获其中的59个,而不会出现在生产环境中。请注意,在本文中我们只考虑减少错误代码。让代码更丰富的信息/文档如今,在前端开发中,编写可重用的代码和可重用的组件就像玩游戏一样。重新发明轮子容易出错且成本高昂。所以最好使用现有的库或代码。TypeScript在代码中添加了大量信息并强制执行此用法。输出的TypeScript代码包含了更多的相关信息,比如类型签名等,而JavaScript代码的描述信息很少,阅读起来也比较困难。您需要以JSDoc或某种外部文档的形式提供信息。当大量代码被复用时,会降低开发效率。当然,阅读和编??写文档仍然很重要,但是类型提示使代码更具可读性。对于尚未完全理解您的代码库的人来说尤其如此。Intellisense与Typescript配合使用效果更好,因为类型签名信息可用。在短期内,使用TypeScript有时确实意味着更多的输入。此外,由于TypeScript将被转换为JavaScript并与JavaScript代码库混合,因此有时必须在某些地方进行战斗和关闭。但从长远来看,TypeScript是可以扩展的,而JavaScript很难扩展。现在使用TypeScript将在未来帮助您的开发人员。TypeScript的功能比JavaScript多TypeScript的功能比JavaScript多。显然,静态类型检查是主要的,但还有其他的。大多数TypeScript特性(以前没有在JavaScript中实现)现在都在JavaScript中实现。但TypeScript仍然有优势,因为它比JavaScript发展得更快。例如接口、命名空间、泛型、抽象类、数据修饰符、可选值、函数重载、装饰器、utils类型和readonly关键字等。本文无意涵盖所有这些功能,只是一个简单的只读TypeScriptutilinterfaceArticle{title:String;content:String;}/***Purefunction,thattranslatesthearticleandreturnsit*/consttranslate=(article:Readonly

)=>{constarticle2={...article};article2.title=translateText(article.title);//不能分配给'content'因为它是只读propertyartilce.content=translateText(article.content);//糟糕,developermeantarticles.content=...returnarticle2}更好的重构和工具重构TypeScript代码比使用无类型语言容易得多。我见过许多JavaScript开发人员使用全局搜索和替换来重命名变量并最终导致单元测试失败。使用TypeScript,您可以在代码中获得额外的语义。使用接口或类时,编译器知道对象将包含哪些字段。现在重命名接口、类或枚举的字段比以往任何时候都容易。只需使用VSCode或IntelliJ的重构功能,然后观看奇迹的发生。强大的背景一项广泛使用的技术拥有几乎无限的学习资源。TypeScript之所以如此,是因为它拥有庞大的社区。如果你正在考虑Angular,你别无选择,只能选择TypeScript。从Angular2开始,Google已完全采用TypeScript作为其主要语言。如果不使用Angular,而是使用React和TypeScript,将大大降低以后开发Angular项目的复杂度。解决JavaScript中静态类型问题的替代方案长期以来JavaScript的问题之一是没有静态类型。这个问题过去一直困扰着开发者,但该项目仍在进行中。在JavaScript的发展过程中,一直在尝试加入静态类型。例如,React为其组件发布了PropTypes以减少开发过程中的类型错误——而TypeScript完全涵盖了这一功能。Facebook也有自己的静态类型检查库(Flow),其工作方式与TypeScript基本相同。2014年,谷歌还提出了一种基于JavaScript的脚本语言,它扩展了TypeScript,称为AtScript。TypeScript的其他好处TypeScript由Microsoft编写和维护。这是一个科技巨头花时间精心维护的项目,让语言感觉更安全。TypeScript不仅在MIT许可下完全开源,而且该项目还提供了透明的路线图和提交功能请求的能力。TypeScript编译器完全用TypeScript编写,所以一旦您对这门语言有信心,您甚至可以为代码库做贡献并扩展它的功能!结论TypeScript提高了代码的可读性并肯定减少了错误,或者至少使它更快速地捕获这些错误——甚至在编写或运行任何单元测试之前。JavaScript无疑正朝着正确的方向发展,但静态类型语言的优势尚未完全实现。当可选的静态类型在未来成为JavaScript的一部分时,使用TypeScript无疑是完美的知识库。