初识TypeScript | 青训营笔记

59 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

为什么选择TypeScript?

JavaScript 是一门非常灵活的编程语言:

  • 它没有类型约束,一个变量可能初始化时是字符串,过一会儿又被赋值为数字。
  • 由于隐式类型转换的存在,有的变量的类型很难在运行前就确定。
  • 基于原型的面向对象编程,使得原型上的属性或方法可以在运行时被修改。
  • 函数是 JavaScript 中的一等公民,可以赋值给变量,也可以当作参数或返回值。

这种灵活性就像一把双刃剑,一方面使得 JavaScript 蓬勃发展,无所不能,从 2013 年开始就一直蝉联最普遍使用的编程语言排行榜冠军;另一方面也使得它的代码质量参差不齐,维护成本高,运行时错误多。

而 TypeScript 的类型系统,在很大程度上弥补了 JavaScript 的缺点。

TypeScript基本语法

  • 数据类型
  • 对象类型
  • 函数类型
  • 函数重载
  • 数组类型
  • TS补充类型
  • TS泛型
  • 类型别名&类型断言
  • 字符串/数字 字面量
  • ...

TypeScript高级类型

联合/交叉类型

联合类型(Union Types)表示取值可以为多种类型中的一种

联合类型使用 | 分隔每个类型。 例如:

联合类型:IA|IB,联合类型表示一个值可以是集中类型之一。简述(相当于取他们类型的交集,可以给变量定义多个类型)

交叉类型:IA&IB;多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。简述(将多个类型合并成一个类型,该类型具有所有类型的特性(取他们类型的合计))

类型保护与类型守卫

类型保护: 访问联合类型时,处于程序安全,仅能访问联合类型中的集中部分。

类型守卫: 定义一个函数,它的返回值是一个类型谓词,生效范围为子作用域。