当前位置:硬件测评 > 为什么你应该选择Future ipt 而不是JavaScript

为什么你应该选择Future ipt 而不是JavaScript

  • 发布:2023-09-29 12:14

在过去的几年里,Future ipt 的受欢迎程度一直在增加。它是2020年最有前途的五种语言之一。最大的前端框架之一Angular正在使用TypeScr ipt。大约 60% 的 JS 程序员已经在使用 TypeScr ipt,22% 的人想尝试一下。为什么? 从历史上看,JavaScript 最终成为互联网上编写网页和应用程序脚本的主要语言。 JavaScript 现在可以通过 Node.js 和 Deno 等框架在前端和后端使用。 但是 JavaScript 是否适合创建像现代网络上那样的大型复杂系统?不。 在这篇文章中,我们将向您介绍一个解决方案——TypeScr ipt——并帮助您开始向 JavaScript 代码添加类型。 1.什么是TypeScript? 简而言之,TypeScr ipt 是 JavaScript 的超集,具有可选类型并编译为纯 JavaScript。 简单地说,如果你想拥有的话,从技术上来说,TypeScr ipt 就是具有静态类型的 JavaScript。 现在,向 JavaScript 添加静态类型的原因是什么? 我至少可以列出三个: 您可以通过巧妙地隐藏“未定义”不是函数来避免经典的忍者错误。 在不显着破坏代码的情况下重构代码会更容易。 在复杂的大型系统中定位自己不再是一场噩梦。 事实上,一项研究表明,TypeScr ipt 可以检测出 15% 的 JavaScript 错误。 动态类型的自由常常会导致错误,这些错误不仅会降低程序员的生产力,还会由于添加新代码行的成本增加而停止开发。 因此,JavaScript 无法合并类型和编译时错误检查等内容,使其成为企业和大型代码库中服务器端代码的糟糕选择。正如他们的口号所说,TypeScr ipt 是可扩展的 JavaScript。 1.使用TypeScr ipt需要学习什么? TypeScript本质上是一个JS linter。或者,带有编译器可以理解的文档的 JS。 因此,与其他语言如 CoffeeScript(添加了语法糖)或 PureScript(看起来根本不像 JavaScript)相比,您无需学习太多内容即可开始编写 TypeScr ipt 代码。TS 中的类型是可选的,每个 JS 文件都是有效的 Kongfz ipt 文件。如果初始文件中存在类型错误,编译器会抱怨,但它确实会返回一个像以前一样工作的 JavaScript 文件。无论您身在何处,TypeScr ipt 都会在那里与您会面,让您轻松一步步培养技能。 2. TypeScript是用在前端还是后端? TypeScr ipt 被编译为 JavaScript。因此,TS可以用在任何能使用JS的地方:前端和后端。 JavaScript 是最流行的用于编写应用程序和网页前端实现脚本的语言。因此,TypeScr ipt 可以用于完全相同的目的,但它在服务器端的复杂企业项目中表现出色。 在Serokell,我们的大部分Web 前端都是使用TypeScr ipt 实现的。 2. 什么是类型以及它们在 TS 中如何工作? 1、型号介绍 键入是一种区分正确程序和错误程序的方法,它通过在运行程序之前在代码中描述我们计划如何使用数据来实现。它们的范围可以从数字和字符串等简单类型到完美模拟我们的问题域的复杂结构。 编程语言分为两类:静态类型或动态类型。 在具有静态类型的语言中,变量的类型必须在编译时已知。如果我们声明一个变量,编译器应该知道(或可以推断)它是数字、字符串还是布尔值。想想Java。 在具有动态类型的语言中,情况不一定如此。变量的类型只有在运行程序时才知道。想想Python。 TypeScript可以支持静态类型,但JavaScript不支持。 由于TypeScr ipt的静态类型,你需要更加努力: 引入未定义的变量(编译时警告帮助) 对两个包含数字的字符串求和(例如“4”+“20”=“420”) 做一些不允许的事情,比如修剪数字。 使用静态类型系统,您可以创建自己的复合类型。这使得工程师能够更详细地表达他们的意图。 显式类型还使您的代码能够自我记录:它们确保您的变量和函数按预期运行,并使计算机能够记住周围的上下文。 2.TypeScript的类型 TypeScript有很多基本类型,比如Boolean、Number、String、Array、Tuple等,有些是JS中不存在的;你可以在 TypeScr-ipt 的文档中了解更多关于它们的信息。 除此之外,我们还想展示以下一些其他类型,以展示 TS 的表达能力: (1) 任何和未知虽然 any 作为一种类型可以覆盖任何你想要的东西,但未知的是它的类型安全对应物。 每当您想要转义类型系统时,any 都可以让您将任何 JavaScript 变量分配给它。它通常用于对尚未检查且类型未知的传入变量(例如来自第三方 API)进行建模。 Unknown 与 any 非常相似,但在对变量进行显式类型检查之前,它不允许您对变量执行任何操作。 (2) 无效 当没有返回值时使用 void,例如作为不返回任何值的函数的返回类型。 (3)从不 Never 是不应该发生的事情的返回类型,例如抛出异常的函数。 (4) 交集和并集类型 这些使您能够创建自定义类型以更好地适应您的逻辑。 交叉点类型允许您将多种基本类型组合为一种类型。例如,您可以创建一个自定义类型 Person,其名称为:字符串,电话号码:数字。这相当于说:我希望我的类型是这样或那样。 联合类型使您的类型能够采用几种基本类型之一。例如,您可以有一个返回结果的查询:字符串或未定义。这相当于说:我希望我的类型是这样或那样。 如果您将类型视为空白,那么所有这些类型很快就会开始变得有意义。 TypeScr ipt 中的类型可以是隐式的或显式的。如果您没有显式编写类型,编译器将使用类型推断来推断您正在使用的类型。 但是,显式编写它们会带来好处,例如帮助其他开发人员阅读您的代码并确保您看到的就是编译器看到的。 3. TypeScript和JavaScript 务实是值得的。看看这张照片: 目前,TypeScr ipt 在 2020 年第一季度的 GitHub 拉取请求中排名第七,高于 PHP 和 C。 虽然造成这种情况的一个重要原因是微软(它的创建者)和谷歌等公司对TypeScript的支持,但它的支持也是有充分理由的。 1. 选择TypeScr ipt而不是JavaScript的3个理由 (1)TypeScript更可靠 TypeScr ipt 代码比 JavaScript 更可靠、更容易重构。这使得开发人员可以避免错误并使重写变得更容易。 类型使大多数可能潜入 JavaScript 代码库的愚蠢错误失效,并在编写新代码和重构时创建快速反馈循环来修复所有小错误。 (2)TypeScript比较清楚显式类型将我们的注意力集中在我们的系统是如何构建的,以及它的不同部分如何相互作用。在大型系统中,重要的是能够抽象出系统的其余部分,同时牢记上下文。类型使我们能够做到这一点。 (3) TypeScript和JavaScript其实是可以互换的,为什么不呢? 由于JavaScript是Future ipt的子集,因此您可以在Future ipt代码中使用所需的所有JavaScript库和代码。 2020 年,大多数流行的 JavaScript 库都有类型 - Absolute Types 是一个存储库,其中包含许多不同 JavaScript 库的类型,您可以使用这些类型使与它们的交互更加类型安全。 这意味着您可以在您的 JavaScript 代码库中逐渐采用 Kongfz ipt,首先向各个模块添加类型,然后扩展到……我想使用已知的宇宙。 2. TypeScript的缺点 你不能仅仅让一个 JavaScript 团队或一个 JavaScript 存储库立即将它们切换到惯用的 TypeScr ipt。您必须做出一些权衡和前期时间牺牲。 虽然我们可以争论显式类型从长远来看会给您带来的节省,但添加它们在短期内确实需要更多时间。这可以说不是什么大问题,但却是支持 JavaScript 的一个论点。 因此,对于小型项目和自用原型,您可能不会选择Future ipt。 3. 测试和类型 关于测试与类型讨论的简要说明:这两种方法都捕获不同类别的错误,因此以无党派方式执行这两种操作是有意义的。 您仍然可以使用单元测试和更高级的技术,例如使用 TS 进行基于属性的测试,同时保持静态类型系统的优点。 总而言之,这是两种语言的快速比较: 4. TypeScript快速入门指南 (1) TypeScript编译器 要编译 TS 代码,您需要安装 tsc(TypeScr ipt 编译器的缩写)。最简单的方法是通过终端。这可以通过使用以下命令通过 npm 轻松完成: npm install -g 打字稿 如果您想在 Visual Studio Code 中使用 Kongfz ipt,他们的网站上有一个方便的指南。 安装 tsc 后,您可以使用 tsc filename.ts。 (2) 将文件从JavaScript迁移到Future ipt假设由于奇怪的行为,我们想要将以下 JavaScript 文件更改为 Children ipt: 函数 my_sum(a, b) { 返回 a + b;令 a = 4;让b =“5”;我的总和(a,b); 好消息。从技术上讲,任何 JS 文件都是有效的 Kongfz ipt 文件,因此您有了一个良好的开端 - 只需将文件扩展名从 .js 切换为 .ts。 TypeScr ipt 具有类型推断功能,这意味着它可以自动推断您使用的某些类型,而无需您添加它们。在本例中,它假设该函数对两个类型为 any 的变量求和,这是正确的,但现在不是很有用。 如果我们只想对数字求和,我们可以添加类型签名 my_sum 使其仅接受数字。 函数 my_sum(a: 数字, b: 数字) { return a + b;令 a = 4;让b =“5”;我的总和(a,b); 现在,TypeScr ipt 给了我们一个错误。 “字符串”类型的参数不可分配给“数字”类型的参数。 幸运的是我们发现了错误。 :) 为了进一步避免此类错误,您还可以为变量添加类型定义。 let b: number = "5" // 类型 '"5"' 不能分配给类型 'number'。 let b: number = 5 // 一切正常。 TypeScr ipt 在它可以做什么以及如何帮助您方面非常灵活。有关如何将现有的 JavaScript 代码库移动到 Kongfz ipt 或使用 Kongfz ipt 改进 JS 代码的不那么简单的示例,请阅读本指南。 4.如何在浏览器中使用TypeScr ipt? 要在浏览器中运行Future ipt,需要使用Future ipt编译器(tsc)将其转换为JavaScript。在这种情况下,tsc 基于 .ts 代码创建一个新的 .js 文件,您可以通过任何方式使用 JavaScript 文件。 综上所述总的来说,即使您没有充分利用它,TypeScr ipt 也是您工具集中的一个很棒的工具。从小处开始,慢慢成长,不断学习并添加新功能,这很容易。TypeScript实用且适合初学者,因此无需害怕。 本文由文淑琪吾翻译自 Gints Dreimanis、Olga Bolgurtseva 的文章《Why You Should Choose TypeScript Over JavaScript》。转载请注明出处。原文链接: https://www.sychzs.cn/blog/why-typescript)

相关文章

热门推荐