2016年,TypeScript 2.0 版本发布,引入了很多重大的语法功能。
类型系统通常比较复杂,要学习的东西更多,要求开发者付出更高的学习成本。
TypeScript 的历史

2020年,TypeScript 4.0 版本发布。

(4)提供了代码文档。

类型(type)指的是一组具有相同特征的值。如果两个值具有某种共同的特征,就可以说,它们属于同一种类型。

(2)增加了编程工作量。 上面的例一,变量x声明时,值的类型是数值,但是后面可以改成字符串。所以,无法提前知道变量的类型是什么,也就是说,变量的类型是动态的。

类型的概念

TypeScript 可以看成是 JavaScript 的超集(superset),即它继承了后者的全部语法,所有 JavaScript 脚本都可以当作 TypeScript 脚本(但是可能会报错),此外它再增加了一些自己的语法。
(1)丧失了动态类型的代码灵活性。 学习 TypeScript,必须先了解 JavaScript 的语法。因为真正的实际功能都是 JavaScript 引擎完成的,TypeScript 只是添加了一个类型系统。

但是,JavaScript 的类型系统非常弱,而且没有使用限制,运算符可以接受各种类型的值。在语法上,JavaScript 属于动态类型语言。

2020年,TypeScript 4.0 版本发布。

上面示例中,不小心把message拼错了,写成messege。TypeScript 就会报错,指出没有定义过这个属性。JavaScript 遇到这种情况是不报错的。
下面简要介绍 TypeScript 的发展历史。

2012年,微软公司宣布推出 TypeScript 语言,设计者是著名的编程语言设计大师 Anders Hejlsberg,他也是 C# 和 .NET 的设计师。

(1)丧失了动态类型的代码灵活性。
2016年,TypeScript 2.0 版本发布,引入了很多重大的语法功能。
下面简要介绍 TypeScript 的发展历史。

当时,Windows 8 即将发布,它的应用程序开发除了使用 C# 和 Visual Basic,还可以使用 HTML + JavaScript。微软希望,TypeScript 既能让 JavaScript 程序员快速上手,也能让 .Net 程序员感到熟悉。

有了静态类型,不必运行代码,就可以确定变量的类型,从而推断代码有没有错误。这就叫做代码的静态分析。

但是,JavaScript 的类型系统非常弱,而且没有使用限制,运算符可以接受各种类型的值。在语法上,JavaScript 属于动态类型语言。

下面简要介绍 TypeScript 的发展历史。
下面是一段简单的 TypeScript 代码,演示一下类型系统的作用。

(4)引入了独立的编译步骤。

(2)增加了编程工作量。

另外,TypeScript 是一个开源项目,接受社区的参与,核心的编译器采用 Apache 2.0 许可证。微软希望通过这种做法,迅速提高这门语言在社区的接受度。
静态类型的缺点

类型信息大大减轻了重构的成本。一般来说,只要函数或对象的参数和返回值保持类型不变,就能基本确定,重构后的代码也能正常运行。如果还有配套的单元测试,就完全可以放心重构。越是大型的、多人合作的项目,类型信息能够提供的帮助越大。

类型信息可以部分替代代码文档,解释应该如何使用这些代码,熟练的开发者往往只看类型,就能大致推断代码的作用。借助类型信息,很多工具能够直接生成文档。