美文网首页
TypeScript - 02 类型

TypeScript - 02 类型

作者: Lisa_Guo | 来源:发表于2019-12-11 14:34 被阅读0次

    基础类型

    basic-types 介绍了默认支持的数据类型: string,boolean,array,object等

    高级类型

    点击查看详情

    • 交叉类型(Intersection Types)
      type a & type b,将多个类型合并为一个类型。新的类型要满足所有类型的属性
    interface Loggable {
       log(): void;
    }
    interface Person {
       firstName: string;
       lastName: string
    }
    // t 需要同时满足Loggable 和Person的特性
    let t : Loggable & Person;
    

    变量t必须要包含 firstName,lastName,log()

    • 联合类型(Union Types)
      type a | type b,新类型满足其中一个类型即可
    function padLeft(value: string, padding: string | number) {
        // ...
    }
    function  type: number | string;
    
    • 类型别名(Type Aliases)
      关键字 type为类型申明一个别名:type alisa = type-definition
    type Name = string
    type NameResolver = () => string
    type NameOrResolver = Name | NameResolver
    function getName(m : NameOrResolver) : Name {}
    
    • 字面量类型(Literal Types)
      字符串字面量类型和联合类型一起使用,可以限定变量的取值范围
    type Easing = "ease-in" | "ease-out" | "ease-in-out";
    function animate(easing: Easing) {
    }
    
    animate('easy-in') // OK
    animate('uneasy') // error
    
    • 索引类型(Index Types)
      一般用于对象具有动态属性的场景
      keyof T 索引类型查询操作符,返回类型T包含的属性名的集合
    interface Person {
      name: string;
      age: number;
    }
    
    let personProps:  keyof Person  //  'name' | 'age'
    

    T[K]索引访问操作符

    function getProperty<T, K extends keyof T>(o: T, name: K): T[K] {
        return o[name];    // o[name] is of type T[K]
    }
    
    let name: string = getProperty(person, 'name');
    let age: number = getProperty(person, 'age');
    let unknown = getProperty(person, 'unknown'); // error, 'unknown' is not in 'name' | 'age'
    

    相关文章

      网友评论

          本文标题:TypeScript - 02 类型

          本文链接:https://www.haomeiwen.com/subject/blfgwctx.html