• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

TypeScript的故事-第I集

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

有关TypeScript的系列文章的第一篇。

任何第一次学习编程的人都必须尽早理解类型。 他们无处不在。 毕竟,每个值都有一个类型。 没有价值的编程语言是什么?

除了担任Sainsbury's Tech(UK)的软件工程师外,我还是React GraphQL Academy的教练,我们在这里教授来自世界各地的专业开发人员。 通常,我们会对TypeScript进行介绍,许多学生最终会提出一些超出TypeScript并进入更广泛领域的问题。 这就是我考虑为所有人编写更深入的材料的原因。 我本可以直接进入更高级的主题,例如设计模式,但是我发现深入研究TypeScript基础非常重要。 并不是说我要写有关原始类型的论文。 为此,您拥有正式的TypeScript文档以及许多其他资源。 但是,我将抚摸我认为对您很重要的主题,以使您从入门入手。

什么是类型系统?

“类型是在程序中强制执行抽象级别的语法方法。 从类型理论的角度对类型系统和编程语言的研究在软件工程,语言设计,高性能编译器和安全性方面具有重要的应用。” 本杰明·皮尔斯

类型系统是一组将类型属性添加到编程语言的许多构造块(如表达式和变量)的规则。 它的主要目标是通过在编译时表达类型错误来防止代码库中的错误。

为什么要使用类型系统?

我不会试图说服您使用类型系统。 我的感觉是,如果您已经读到这一点,那么您已经在考虑或者至少正在考虑。

诸如JavaScript之类的弱/动态类型语言之所以存在,是有原因的。 它们的松散可能会为您提供更大的灵活性,并允许您以(可以说)更快的速度移动,因为我们不必担心冗长的声明和表达式。 但是要花多少钱呢?

在当今时代,TDD具有很高的价值,并且是现代JavaScript开发的基础,我们需要考虑可能增加我们对代码的信心程度的任何可能的附加步骤。

与某些人可能想到的相反,类型系统不能使您完全免受麻烦。 它不能使您免于犯错误。 但是,它使您对代码更有信心。 在编写代码时明确表达自己的意图,不仅可以增强您的自信心,还具有以下优点:

因为第一行是一种自我说明的形式,所以使您的代码更易于理解和推理,从而有助于开发人员的工作流程

他们会取代测试吗?

一点也不。 多年来,我们一直(并且很好)将Mike Cohn的敏捷测试金字塔用作敏捷开发团队的概念。 简而言之,这种方法可以使项目充满信心地发展,并使技术债务降至最低。

迈克·科恩(Mike Cohn)的敏捷测试金字塔

但是在2018年,Kent C.Dodds提出了经典金字塔的新表示形式,其中静态类型是其基础。 它被称为“测试奖杯”。

肯特·多德斯(Kent C. Dodds)测试奖杯

“在编写代码时捕获拼写错误并输入错误。” 肯特·多德斯

在传统方法中添加了新层。 一种新的测试类别,省去了编写冗长而效率低下的单元测试的负担,而这种麻烦可能会被类型系统所困扰。 测试奖杯挑战了一套可能不再适用于现代开发技术的规则。

测试驱动开发与静态类型有什么共同点? 我们必须提前计划的事实。 此函数将接受哪些参数? 它会返回什么? 自动化整个过程意味着您将更好地了解代码库,并为将来的功能和可能的重构提供更好的基础。

我们要怎么做才能在JavaScript项目中引入类型系统?

其中两个选项是flow和typescript。 虽然他们在社区中都有自己的话题,但实际上却截然不同。

Flow是由Facebook开发的,它是用OCaml编写的JavaScript的静态类型检查器。 由于它不是语言,因此可以与JavaScript顺利集成。 尽管它是一种快速而可靠的工具,但在最近几年中它对TypeScript失去了吸引力。 特别是由于TypeScript提供了很棒的社区支持。

TypeScript是JavaScript的超集,由Microsoft创建和维护。 作为一种语言,它被设计为向JavaScript提供缺少的键入系统。 它提供了编译时类型验证,如果有任何键入错误,将不允许我们的代码进行编译。 它不仅以“ how-to”和文档的形式提供了巨大的社区支持,还以声明文件的形式提供了支持(我们将在本系列的后面部分进行介绍)。 它还具有Visual Studio Code (猜测是谁创建的?Microsoft)对IDE的强大支持,使其有时可以通过直观的集成来节省生命。

在本简介中,我不想过多地谈论TypeScript。 已经有很多关于TypeScript的历史和发展的文章。 我宁愿跟进一系列有关如何使用它的实用指南。 希望我很快见到你。

From: https://hackernoon.com/a-typescript-tale-episode-1-q9pa315r


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
vue 集成 typescript Element UI 之懒人集成法发布时间:2022-07-18
下一篇:
TypeScript学习(二)-TypeScript的接口(interface)和类(class)发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap