
以上基本都是个人的基础信息,以及logo。接下来我们一起学习typescript基础知识,俗话说“基础不牢,地动山摇”,废话不多说,让我们开始吧
1. 布尔类型
let married: boolean = falseconst married1: boolean = true
通过类型声明boolean表示该变量赋值的类型,如果一旦被声明为了boolean类型,就不能赋值为其他的基本数据类型(下面同样)
2. 数字类型
let num: number = 10
3. 字符串类型
let str: string = '11'
4. 数组类型
const arr1: number[] = [1, 2, 3]const arr2: Array<number> = [3, 4, 5]
上述提到了两种定义数组类型的方式,其中第一种方式就是按以往的类型进行声明,但是第二种我们这里使用了泛型,泛型的话后面会进行介绍
5. 元组类型
// 元组类型const arr3: [number, string] = [1, '3']
| 元组 | 数组 | | —- | —- | | 每一项可以定义不同的类型 | 每一项都是同一种类型 | | 有预定义的长度 | 没有长度限制 | | 用于表示一个固定的结构 | 用于表示一个列表 |
6. 枚举类型
// 普通枚举类型enum IStatus {ADD,DELETE,EDIT,SELECT}// 常数枚举类型const enum Colors {Red,Yellow,Blue}
7. 任意类型
let test: anytest = truetest = 1test = '1'test = function () {}
- any 就是可以赋值给任意类型
- 第三方库没有提供类型文件时可以使用
- 类型转换遇到困难时
- 数据结构太复杂难以定义
任何类型跟any交叉都是any(可以用来判断是否是any)
**type_IsAny_<_T_> =0extends1&_T_?_true_:_false_**// 备注:任何类型跟any交叉都是any// 方法1type IsAny<T> = 0 extends 1 & T ? true : false
8. null和undefined类型
let x: numberx = nullx = undefined
配置tsconfig.json中的配置{strictNullChecks: false}, 可以设置不进行check,可以赋值为null/ undefined
null和undefined是其他类型的子类,可以赋值给其他类型,例如:数字类型
9. void类型
// void 表示函数没有返回值function greeting(name: string): void {console.log('hello', name)}
10. never类型
never是其他类型的子类型,代表不会出现的值(后续我们在修仙之路上会用到很多关于never的实例)
11. never和void区别
void可以被赋值为null和undefined的类型,never则是一个不包含值的类型
拥有void返回值类型的函数能正常运行,拥有never返回值类型的函数就无法正常返回,无法终止
12. 联合类型
// 表示联合类型let aaa: number | stringaaa = 1aaa = '1'
联合类型表示取值可以为多种类型中的一种
- 未赋值时联合类型上只能访问两个类型共有的属性和方法
13. 类型断言
```typescript // 使用断言 将联合类型断言为一种固定的类型 let bbb: number | string (bbb as number).toFixed(2)
// 双重断言 interface Person { name: string; age: number; } const person = ‘zhufeng’ as any as Person; // ok
- 类型断言可以将一个联合类型的变量,指定为一个更加具体的类型- 不能将联合类型断言为不存在的类型<a name="DJzKU"></a>## 14. 字面量类型和类型字面量```typescriptconst up:'Up'= 'Up';const down: "Down" = "Down";const left: "Left" = "Left";const right: "Right" = "Right";type Direction = 'Up' | 'Down' | 'Left' | 'Right';
字面量类型的要和实际的值的字面量一一对应,如果不一致就会报错
15. 字符串字面量 vs 联合类型
字符串字面量类型用来约束取值只能是某几个字符串中的一个, 联合类型(Union Types)表示取值可以为多种类型中的一种
字符串字面量 限定了使用该字面量的地方仅接受特定的值,联合类型 对于值并没有限定,仅仅限定值的类型需要保持一致
17. unknown
unknown 是any类型对应的安全类型
- unknown 和 any的主要区别是unknown类型会更加严格,在对unknown类型的值执行大多数操作之前,我们必须进行某种形式的检查。而在对any类型的值执行操作之前,我们不必进行任何检查
- 而且unknown 只能赋值给unknown 以及any
- 任何类型都可以赋值给unknown类型
- 在联合类型中,unknown类型会吸收任何类型,这就意味着如果任一组成类型是unknown,联合类型也是unknown
- 在交叉类型中,任何类型都可以吸收unknown类型,这就意味着任何类型跟unknown交叉都不会修改其类型
- never是unknown的子类型
// 可以用来判断any类型// 备注:unknown 只能复制给unknown 以及anytype IsAny<T> = [unknown] extends [T] ? [T] extends [string] ? true : false : false
16. 函数
1. 函数的定义
2. 函数表达式
3. 函数无返回值
4. 可选参数
5. 默认参数
6. 剩余参数
7. 函数重载
