深入理解TS | 青训营笔记

80 阅读4分钟

为什么学习Javascript

1.png

TypeScript基础

基础类型

  • 布尔值:最基本的数据类型就是简单的true/false值,在JavaScript和TypeScript里叫做boolean。
  • 数字:和JavaScript一样,TypeScript里的所有数字都是浮点数。 这些浮点数的类型是number。
  • 字符串:TypeScript像其它语言里一样,使用string表示文本数据类型。 和JavaScript一样,可以使用双引号(")或单引号(’)表示字符串。
  • 数组:TypeScript像JavaScript一样可以操作数组元素。 有两种方式可以定义数组。 第一种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组;第二种方式是使用数组泛型,Array<元素类型>
  • 元组tuple:允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
  • 枚举 :enum类型是对JavaScript标准数据类型的一个补充
  • any :使用any类型来标记这些在编程阶段还不清楚类型的变量指定一个类型,直接让它们通过编译阶段的检查
  • void :某种程度上来说,void类型像是与any类型相反,它表示没有任何类型,只能为它赋予undefined和null

函数类型

  • 定义:TS定义函数类型时要定义输入参数类型和输出类型
  • 输入参数:参数支持可选参数和默认参数
  • 输出参数:输出可以自动推断,没有返回值,默认为void类型
  • 函数重载:名称相同但参数不同,可以通过参数重载支持多种类型

interface

接口(Interfaces)来定义对象的类型

特点:

  • 可选属性:有时我们希望不要完全匹配一个形状,那么可以用可选属性
  • 任意属性 :有时候我们希望一个接口允许有任意的属性
  • 只读属性 :有时候我们希望对象中的一些字段只能在创建的时候被赋值,那么可以用 readonly 定义只读属性 注意,只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候

TypeScript 中类的用法

  • public private 和 protected
  • TypeScript 可以使用三种访问修饰符(Access Modifiers),分别是 public、private 和 protected。
  • public 修饰的属性或方法是公有的,可以在任何地方被访问到,默认所有的属性和方法都是 public 的
  • private 修饰的属性或方法是私有的,不能在声明它的类的外部访问
  • protected 修饰的属性或方法是受保护的,它和 private 类似,区别是它在子类中也是允许被访问的

抽象类

  • abstract 用于定义抽象类和其中的抽象方法。
  • 抽象类是不允许被实例化的:
  • 其次,抽象类中的抽象方法必须被子类实现

interface约束类 使用implements关键字

TypeScript高级类型

  1. 联合类型
  2. 交叉类型
  3. 类型断言
  4. 类型别名:给类型起个别名
  • 相同点:
  1. 都可以定义对象或函数
  2. 都允许继承
  • 差异点:
  1. interface是TS用来定义对象,type是用来定义别名方便使用
  2. type可以定义基本类型,interface不行
  3. interface可以合并重复声明,type不行

泛型

设计泛型的关键目的是在成员之间提供有意义的约束,这些成员可以是:类的实例成员、类的方法、函数参数和函数返回值。

基础操作符

typeof:获取类型 keyof:获取所有键 in:遍历枚举类型 T[K]:索引访问 extends:泛型约束

泛型工具类

  • Partial 的作用就是将某个类型里的属性全部变为可选项
  • Record<K extends keyof any, T>的作用是将 K 中所有的属性的值转化为 T类型
  • Pick<T, K extends keyof T> 的作用是将某个类型中的子属性挑出来,变成包含这个类型部分属性的子类型
  • Exclude<T, U>的作用是将某个类型中属于另一个的类型移除掉
  • ReturnType的作用是用于获取函数T的返回类型

声明文件

  • declare:三方库需要类型声明文件
  • .d.ts:声明文件定义
  • @types:三方库TS类型包
  • tsconfig.json:定义TS的配置