基础类型
布尔值
1
| let isBoolean: boolean = true or false
|
数字
1
| let isNumber: number = 6
|
字符串
1
| let age: string = `this ${变量}`
|
数组
1
| let list: number[] or Array<number>= [1, 2, 3]
|
元组(Tuple):已知元素数量和类型的数组,各元素的类型不必相同
1 2
| let x: [string, number] x = ['hello',10]
|
枚举
any:允许赋任意值,且可以调用在这个变量上的任意方法,而Object不能调用这些方法
1 2
| let list: any[] = [1, true, "free"]; list[1] = 100;
|
空值(void): 没有返回值的返回类型
null和undefined: 返回各自类型
- 默认情况下,可以赋值给number
- 指定–strictNullChecks标记,null和undefined只能赋值给void和自己
Never
- 永不存在的值的类型(异常,箭头函数返回值,无返回值的函数表达式,永不为真的变量)
- never可以赋值给其它类型,但除never本身,任意类型都不可以赋值给never
Object
1 2 3
| declare function create(o: object | null): void create({ prop: 0 }) obj[key]
|
类型断言:类型转换
is关键字
- 当一个变量存在多个类型时,编译器识别不出来使用
- eg: 假值判断
1 2
| export type Falsy = false | '' | 0 | null | undefined; export const isFalsy = (val: unknown): val is Falsy => !val;
|
“尖括号”语法: 使用<>指定someValue的类型为string
1 2
| let someValue: any = "this is a string" let strLength: number = (<string>someValue).length
|
as语法:使用as指定类型
- 在TS里使用JSX时,只有as语法断言是被允许的
1
| let strLength: number = (someValue as string).length
|
类型推论
基础类型,通过值来推出类型: 发生在初始化变量和成员,设置默认参数值和决定函数返回值时
最佳通用类型
- 多个表达式中存在不同类型,需要找到通用的类型
- 有存在共享相同的类型时,可以通过类,继承关系将选项中不存在的值类型获取到
- let zoo: Animal[] = [new Rhino(), new Elephant(), new Snake()];
- 如未找到最佳通用类型,类型推断的结果为
联合数组类型
- (Rhino | Elephant | Snake)[]
上下文类型
- 通过 = 或 : 的左边来推出右边的类型(明确给出类型则忽略推断结果)
- 使用场景: 函数的参数,赋值表达式的右边,类型断言,对象成员和数组字面量和返回值语句。