type关键字用于给任意类型起一个新名字

1
2
type 数字 = number
let a : 数字 = 5

可用于定义联合类型(or),以下定义均合法:

1
2
3
4
5
6
type gender = 'male' | 'female' //限制gender类型的变量只能是这两个值之一
type a = string | number //a类型变量可为 number 和 string 类型中的任一种
let b : a = 'hello'
let c : a = 123
b = 456
c = 'abc'

定义函数类型,可规定函数的参数和返回值:

1
2
3
4
5
6
7
8
type calc = (a: number, b: number) => number
let add: calc = function (x, y) {
return x + y
}

let subtract: calc = (x, y) => {
return x - y
}

定义元组类型:

1
2
type information = [name: string, age: number, height: number]
let me: information = ["李华", 18, 188]

可用于定义交叉类型(and),必须同时满足,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
type cat = { 动物: boolean; 喵喵喵: boolean }
type dog = { 动物: boolean; 汪汪汪: boolean }
type pet = cat & dog
let 旺财: pet = {
动物: true,
喵喵喵: false,
汪汪汪: true,
}
let 胖猫: pet = {
动物: true,
喵喵喵: true,
汪汪汪: false,
}
function 叫(a: pet) {
if (a.喵喵喵 === true) console.log('喵喵喵')
if (a.汪汪汪 === true) console.log('汪汪汪')
if (a.动物 === false) console.log("动物才会叫")
}
叫(旺财)
叫(胖猫)