基础语法/关键词
基础类型
在 TS 中,基本类型(注意:这里指的是声明变量时使用的 Type)包括 Boolean、Number、String、Array、Tuple、Enum、Unknown、Any、Void、Null、Undefined、Never、Object。其中 Number、String、Boolean、Symbol、Object 等在作为 Type 时,应使用小写形式。
- boolean(布尔类型)
- number(数字类型)
- string(字符串类型)
- array(数组类型)
- tuple(元组类型) 常用于 hooks 返回结果
- enum(枚举类型)
- any(任意类型)
- null 和 undefined 类型
- void 类型
- never 类型
- unknown 可以表示任何类型,但是收窄版的 any,不能读取 unknown 上的方法 已经上 unknown 类型的值无法赋值给其他值
- object 对象类型
在 JavaScript 中 null 表示 "什么都没有",是一个只有一个值的特殊类型,表示一个空对象引用,而 undefined 表示一个没有设置值的变量
默认情况下 null 和 undefined 是所有类型的子类型, 就是说你可以把 null 和 undefined 赋值给 number 类型的变量
而 never 是其他类型 (包括 null 和 undefined)的子类型, 可以赋值给任何类型,代表从不会出现的值 但是没有类型是 never 的子类型,这意味着声明 never 的变量只能被 never 类型所赋值。 never 类型一般用来指定那些总是会抛出异常、无限循环
不过,很多时候我们不需要显式地声明变量的类型,可以让 TS 自动进行 type infer。如:
let foo = ''; // 变量 foo 的类型会被推导为 string
我推荐使用这种方式来进行代码的编写,不过在 TS 无法推导出类型的情况下,应当显式地声明类型。
Array 类型
在进行 Array 的类型声明时,推荐用简化方式进行声明:
const list: number[] = [1, 2, 3]; // 不简化的方法是Array<number>
// 如果Array的element是复杂对象时,建议先声明interface:
interface Record {
id: string;
description: string;
}
const records: Record[] = [];