TS 基础
基础类型
- boolean, number, string:
需要注意number和Number的区别:TypeScript中指定类型的时候要用 number ,这是TypeScript的类型关键字。而 Number 是 JavaScript 的原生构造函数,用它来创建数值类型的值,这两个是不一样的。包括string、boolean等都是TypeScript的类型关键字,而不是JavaScript语法。 - 枚举 enum:
定义枚举类型的值时,可以通过Enum['key']或者Enum.key的形式获取到对应的值 value。TypeScript 还支持反向映射,但是反向映射只支持数字枚举,不支持字符串枚举。 - any, void
- never: 表示永远不存在的值的类型,never是任何类型的子类型,所以可以赋值给任何类型
- 数组:
Array<number> - 元组tuple:
元组可以看做是数组的扩展,它表示已知元素数量和类型的数组,它特别适合用来实现多值返回。确切的说,就是已知数组中每一个位置上的元素的类型,可以通过元组的索引为元素赋值:: - unknow:
任何类型都可以赋值给unknown类型,但是unknown不可以赋值给其他类型,只能赋值给unknown和any类型,unknow类型的值不能进行任何操作,只能进行等或不等操作在实际的使用中,应该尽量避免使用any,因为 any 会丢失类型信息,一旦一个类型被指定为 any,那么在它上面进行任何操作都是合法的,所以会有意想不到的情况发生。因此如果遇到无法确定类型的情况,要先考虑使用 unknown。
函数类型
- 定义函数时要定义输入参数和输出类型
- 输出参数:如果没有返回值,则默认为void
- 函数重载:名称相同但是参数不同
接口
接口是为了定义对象类型 特点:
- 可以设置属性
- 描述函数类型
- 描述自定义类型
类
特点:
- 增加了修饰符:public,protected ,privat
- 抽象类:只能被继承,不能实例化 ,抽象方法必须被子类实现
高级类型
-
联合类型:& 联合类型允许一个变量或参数可以是多个类型之一。这样可以增加代码的灵活性,特别是在处理多个可能的输入类型时非常有用。
-
交叉类型:| 交叉类型将两个或多个类型合并成一个类型。这样可以让我们在一个对象上拥有多个不同的类型特性。
-
类型断言:as 在 TypeScript 中让编译器相信一个特定的值所属的类型。它允许开发者手动指定变量的类型,从而覆盖 TypeScript 的类型推导机制。 ``` let someValue: any = "hello world";let strLength: number = (someValue as string).length;
-
类型别名:type 类型别名可以为一个现有的类型起一个新的名字,以便更好地理解代码。它还可以帮助简化代码,减少代码的重复性。
泛型
定义:创建一个可重用的组件,不仅要适用当前的数据类型,还要适用未来的
- 泛型的作用是临时占位,之后通过对传来的类型进行推导
基础操作符
- typeof:获取类型
- keyof:获取所有键
- in:遍历所有枚举
- T[k] : 索引访问
- extends: 泛型约束
常用工具类型
- Partial Partial 可以将传入的泛型类型 T 中的所有属性变为可选属性。
- Required 与 Partial 相反,Required 可以将传入的泛型类型 T 中的所有属性变为必填属性。
- Readonly Readonly 可以将传入的泛型类型 T 中的所有属性变为只读属性。
- Pick<T, K> Pick 可以从传入的泛型类型 T 中选择一个或多个属性,并组成一个新的类型。
- Omit<T, K> 与 Pick 相反,Omit 可以从传入的泛型类型 T 中移除一个或多个属性,并组成一个新的类型。