typescript学习笔记 | 青训营笔记

33 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

类型

  • 或:|

  • 基本类型:number,string,boolean,void,null,undefine,any

  • object

  • 列表:Array<string|number>,string[]

  • 元组:[number,string,string],数目与类型相对应

  • 断言:(< string >a) 或 (a as string)

  • 类型别名 type

  • 接口:interface(定义约束)

  • 可选参数: a?:string

  • 默认参数: a:string = ""

  • 索引签名:[a:string]:number(属性名为字符串类型,属性值为number)

  • 枚举:enum

  • 类的修饰符:public,protected,private,readonly
  • get,set(访问器) private _fullName:string; get fullName():string { return _fullName } set fullName(name:string){ this._fullName = name }
  • 抽象类:abstract(既可以定义约束,也可以有具体实现)
  • implement:将接口继承到类,且必须重写接口

泛型

  • 基本:表示
  • 泛型约束
  • 泛型接口(默认值为类型)
  • 类型参数约束(keyof)

补充类型

  1. unknow类型

    • 任何类型可以赋值给unknow类型;
    • 不能将unknow类型赋值给任何类型;
    • nuknow与其他类型交集都是其他类型: string & unkow = string
    • 除了any外,unknown与其他类型联合都是unknow类型:string | unknow = unknow
    • never类型都是unknow类型的子类
  2. map类型(与js相同)

    • map.set(键,值):
    • map.get(键):获取值
    • map.has(键):是否含有某个键所对应的值
    • map.size:数量
    • map.delete(键):删除
    • map.keys():所有键
    • map.values():所有值
    • map.entries():所有键和值[键1,值1],[键2,值2] for of
  3. 索引类型

    使用一个索引访问类型来查询另一个类型上的特定属性 格式: [ key]不会返回null/undefined/never类型

  4. 条件类型 T extends U ? :

    • type MyType = T extends string ?: string : any
    • type res = MyType // string
    • type res = MyType // any
  5. 分布式条件类型

    • 从T中剔除可以赋值给U的类型。 Exclude type res = Exclude<string | number | boolean, number>

    • 提取T中可以赋值给U的类型。 Extract type res = Extract<string | number | boolean, number>

    • 从T中剔除null和undefined。 NonNullable type res = NonNullable<string | boolean | null | undefined>

    • 获取函数返回值类型。 ReturnType type res = ReturnType<()=>number>

    • 获取一个类的构造函数参数组成的元组类型。 ConstructorParameters

    • 获得函数的参数类型组成的元组类型。 Parameters

装饰器:

  • 类装饰器:接受一个参数,被修饰类的构造函数

  • 方法装饰器:接受三个参数,

      第一个为:普通方法是原型对象,静态方法是类本身
      第二个为方法名,
      第三个为方法的属性描述(value,writable,enumerable,configurable),
    
  • 访问器装饰器:(也算是一种方法装饰器)

      一:原型对象
      二:方法名
      三:稍稍不同
    
  • 属性装饰器:接受两个参数

      一:普通方法是原型对象,静态方法是类本身
      二:属性名
    
  • 参数装饰器:三个参数

      一:普通方法是原型对象,静态方法是类本身
      二: 所在方法的方法名
      三:在参数列表中的索引
    
  • 装饰器工厂:返回函数的类型是装饰器