• TypeScript——高级类型


    交叉类型

    并集∪适合做对象的混入

    // 交叉类型 -> 
    interface DogInterFace {
        run(): void
    }
    interface CatInterFace {
        jump(): void
    }
    // 此时pet拥有并集的成员 let pet: DogInterFace
    & CatInterFace = { run() {}, jump() {} }

    联合类型

    声明的类型并不确定 可以是其中的一个 ->交集∩ 增强代码的灵活性
    let a: number | string = 'a';
    let b: 'a' | 'b' | 'c' // 字面量联合类型(只可赋值其中的一种)
    let c: 1 | 2 | 3
    • 对象的联合类型
    class Dog implements DogInterFace {
        run() {}
        eat() {}
    }
    class Cat implements CatInterFace {
        jump() {}
        eat() {}
    }
    enum Master { Boy, Girl }
    function getPet(master: Master) {
        let pet = master === Master.Boy ? new Dog() : new Cat();
        pet.eat() // 联合类型在未确定类型下 可访问所有类型的共有成员
        return pet
    }
    索引类型
    可以实现对对象属性的查询和访问
    • 查询操作符 keyof T
    interface Obj {
        a: number,
        b: string
    }
    let key: keyof Obj // 此时类型为 "a" | "b" 的字面量类型
    • 索引访问操作符 T[K]
    let value: Obj['a'] // number
    映射类型
    从旧类型中创建新类型的一种方式
    type ReadonlyObj = Readonly<Obj> // 所有成员变为readonly
    type PartialObj = Partial<Obj>  // 所有成员变为可选
    type PickObj = Pick<Obj, 'a'> // 选取指定成员
    // 可重新指定成员并指定成员类型
    type RecordObj = Record<'x' | 'y' | 'z',Obj>
    条件类型
    是一种由条件表达式所决定的类型
    // T extends U ? X : Y
    type TypeName<T> = 
      T extends string ? "string" :
      T extends number ? "number" :
      T extends boolean ? "boolean" :
      T extends undefined ? "undefined" :
      T extends Function ? "function" :
      "object";
    
    type T1 = TypeName<string> // string
    type T2 = TypeName<string[]> // object
    type T3 = TypeName<string | string[]> // string | object
    
    type Diff<T, U> = T extends U ? never : T
    type T4 = Diff<'a'|'b','a'> // ’b'
    type noNull<T> = Diff<T,null|undefined> // 去除null和undefined

  • 相关阅读:
    asp.net cookie的操作,写入、读取与操作
    JS控制表格隔行变色
    JS创建select的optgroup
    sitemap文件写法详解及参数说明
    IIS7 URL Rewrite Module Configuration Reference
    Asp.net 中文件的下载
    Context的一些简单运用
    QQ web api
    div下图片自适应解决方法
    C#中文分词算法:ChineseAnalyzer
  • 原文地址:https://www.cnblogs.com/JessieXie/p/12272745.html
Copyright © 2020-2023  润新知