TypeScript 基本语法

名词解释

类型注解

作用:相当于强类型语言中的类型声明

语法:(变量/函数): type,这种语法也叫做类型后置语法

let str: string = 'abc'

联合类型

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

let count: number | string = 10

枚举

一组有名字的常量集合,可以类比手机里的通讯录。

泛型

泛型可以理解为一个类型层面的函数,泛型变量可以类比函数参数,是代表类型的参数,即类型参数化。不预先确定的数据类型,具体的类型在使用的时候才能确定。

语法

ES6 的数据类型

  • Boolean

  • Number

  • String

  • undefined

  • null

  • Symbol

  • BigInt

  • Object

TS 的数据类型

  • boolean

  • number

  • bigint (target 低于 ES2020 时不可用)

  • string

  • undefined

  • null

  • symbol

  • array

  • function

  • object

  • void

  • any

  • unknown

  • never

  • 元组

  • 枚举

  • 高级类型

常规类型注解

注意:

  1. 虽然 numberbigint 都表示数字,但是这两个类型不兼容。

  2. TypeScript 还包含 Number、String、Boolean、Symbol 等类型(注意这些都是首字母大写的),千万别将它们和小写格式对应的 number、string、boolean、symbol 进行等价。基本上我们不会使用到 Number、String、Boolean、Symbol 类型,因为它们并没有什么特殊的用途。这就像我们一般不用 JavaScript 的 Number、String、Boolean 等构造函数 new 一个相应的实例一样。

  3. TS 报错的状态码 2322 是比较常见的,这是静态类型检查的错误码,在注解的类型和赋值的类型不同时会抛出这个错误。

  4. 除了 never 类型,可以把 any 类型的值赋值给任意类型的变量。

Interface

TypeScript 中的 Interface 可以看做是一个集合,这个集合是对对象、类等内部结构的约定

接口还常用于约束函数的行为

Interface 也可以用于约束类的行为

除了 ES6 增加的 Class 用法,TypeScript 还增加了 C++、Java 中常见的 public / protected / private 限定符,限定变量或函数的使用范围。

TypeScript 使用的是结构性类型系统,只要两种类型的成员类型相同,则认为这两种类型是兼容和一致的,但比较包含 private 和 protected 成员的类型时,只有他们是来自同一处的统一类型成员时才会被认为是兼容的

函数类型

函数类型可以先定义再使用,具体实现时就可以不用注明参数和返回值类型了,而且参数名称也不用必须跟定义时相同。

类型谓词

在 TypeScript 中,函数支持一种特殊的类型描述。就是在添加返回值类型的地方,通过 “参数名 + is + 类型”的格式明确了参数的类型,进而引起类型缩小,所以类型谓词函数的一个重要的应用场景是实现自定义类型守卫。

Last updated