ts | 青训营笔记

90 阅读2分钟

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

  1. 2012年微软发布第一个版本

  2. js 是动态类型, ts是静态类型, 都是弱类型语言

  3. 优势:

    • 可读性增强, ide增强
    • 编译阶段暴露大部分错误
    • 多人合作中, 获得更好的稳定性和开发效率
    • 兼容所有js特性, 可以与js共存
    • 渐进式升级
  4. 函数重载

    function getDate(type:'string',timestamp?:string):string;
    interface IGetDate{
    (type:'string',timestamp?:string):string;
    (type:'date',timestamp?:string):Date;
    (type:'string'|'date',timestamp?:string):Date string;}
    
  5. 数组类型

    type IArr1=number[];
    /*泛型表示*/
    //Record表示对象类型
    type IArr2=Array<string number Record<string,number>>;
    /*元祖表示*/
    type IArr3=[number,number,string,string];
    /*接口表示*/
    //表示对象类型
    interface IArr4
    [key:number]:any;
    }
    
  6. 泛型

    //在使用的时候在指定类型
    type IGetRepeatArrR = <T>(target: T)=>T[];
    //T extends string 限制泛型在字符串类型
    //T = number 泛型的默认类型
    
  7. 类型断言和|

    result as type //将result指定为type
    //"1"|"2"表示可以是"1"或者"2"
    
  8. 联合类型和交叉类型 |​和&​ 即类型的与和或

  9. 访问联合类型时只能访问交集部分, 访问其他部分需要先进行判断

  10. keyof​ 返回对象中的字符串字面量

    type IKeys = keyof {a:string; b:string} //"a"|"b"
    
  11. in​取值字符串字面量的一种可能

  12. ?​ 设置类型为可选类型

  13. infer​ :可以从类型中推断类型

    type Flatten<Type> = Type extends Array<infer Item> ? Item : Type;
    type GetReturnType<Type> = Type extends (...args: never[]) => infer Return
      ? Return
      : never;
    
  1. 内置类型:

    • Partial​ :设置所有类型为可选类型
    • Required​ :设置类型为必选类型
    • Readonly​ : 设置为只读
    • Pick​ : 从一个类型中挑选一些key作为新的类型
    • Omit​ :从一个类型中删除一些key作为新类型
    • Exclude​ :从联合类型中删除能复制给第二个泛型的所有类型
    • Extract​ :从联合类型中提取能复制给第二个泛型的所有类型
    • NonNullable​ :排除null 和undefined
    • Parameters​ :从函数类型中获取参数
    • ReturnType​ :获取函数返回类型