包含了对断言、never、void 等类型的说明
基本类型
定义数据类型,基本数据类型中包含 string
number
boolean
等
1 | let name: string = "whbbit" // name 的值只能是字符串类型 |
在 :
前添加 ?
表示这个值不是必填
1 | let obj1: { name: string; age: number; work: boolean } = { |
类型自动推断
在不写类型时,ts 会自动进行类型推断
1 | let name = "whbbit" // 等同于 -> let name: string = 'whbbit' |
类型组合
使用 |
表示类型可以多选,符合 |
之前或者之后的类型即可
1 | let a: string | number // 表示a可以是字符串也可以是一个数值 |
any
在我们不知道是什么类型时,可以定义为 any 类型。对类型不做校验
1 | let a: any |
也可以对构造函数生成的实例进行类型限制。
不推介这样做,class 的类型推断和限制就没有了,不符合使用 ts 的场景
1 | class Animal { |
对配置文件改动,取消对 any 类型的自动推断
1 | { |
unknown
unknown 和 any 的区别
- unknown 表示有类型但是不明确类型是什么,ts 会进行类型的判断
- any 表示这个值没有类型,ts 不会进行类型的判断
1 | let a: any |
可以使用 as 断言来解决
1 | let b: unknown |
断言是什么? 怎么用?
1 | let a: string = "20" |
怎么解决这种问题呢? 我们可以先将 b 转换为 unknown 类型再断言
1 | let a: string = "20" |
void
void 可以是 null 或 undefined,多用于函数返回值的类型
1 | let a: void = null |
never
never 不是任何类型,在函数不能执行到结尾时进行类型推断
1 | function err(): never { |
void 和 never 的区别
- void 常用作函数的返回值的推断,函数没有返回值时,可以将返回类型写为 void
- never 常用作 函数不能执行到末尾 时对函数类型的限制
1 | function printString(content: any): void { |
null & undefined
null 和 undefined 代表的类型就是 js 中对应的 null 和 undefined
1 | let a: null = null |
默认情况下 null 和 undefined 可以作为其他类型的值
1 | let a: string |
可以修改 tsconfig.json 文件中的配置让其不能作为其他类型的值
1 | { |