这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
为什么选择TypeScript?
JavaScript 是一门非常灵活的编程语言:
- 它没有类型约束,一个变量可能初始化时是字符串,过一会儿又被赋值为数字。
- 由于隐式类型转换的存在,有的变量的类型很难在运行前就确定。
- 基于原型的面向对象编程,使得原型上的属性或方法可以在运行时被修改。
- 函数是 JavaScript 中的一等公民,可以赋值给变量,也可以当作参数或返回值。
这种灵活性就像一把双刃剑,一方面使得 JavaScript 蓬勃发展,无所不能,从 2013 年开始就一直蝉联最普遍使用的编程语言排行榜冠军;另一方面也使得它的代码质量参差不齐,维护成本高,运行时错误多。
而 TypeScript 的类型系统,在很大程度上弥补了 JavaScript 的缺点。
TypeScript基本语法
- 数据类型
- 对象类型
- 函数类型
- 函数重载
- 数组类型
- TS补充类型
- TS泛型
- 类型别名&类型断言
- 字符串/数字 字面量
- ...
TypeScript高级类型
联合/交叉类型
联合类型(Union Types)表示取值可以为多种类型中的一种
联合类型使用 | 分隔每个类型。
例如:
联合类型:IA|IB,联合类型表示一个值可以是集中类型之一。简述(相当于取他们类型的交集,可以给变量定义多个类型)
交叉类型:IA&IB;多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。简述(将多个类型合并成一个类型,该类型具有所有类型的特性(取他们类型的合计))
类型保护与类型守卫
类型保护: 访问联合类型时,处于程序安全,仅能访问联合类型中的集中部分。
类型守卫: 定义一个函数,它的返回值是一个类型谓词,生效范围为子作用域。