• TypeScript 之 Type


    Type

    描述:全称叫做 '类型别名',为类型字面量提供名称。比 Interface 支持更丰富的类型系统特性。

    Type 与 Interface 区别

    • Interface 只能描述对象的形状,Type 不止
    • Interface 能多次声明进行扩展,Type 不行
    • 在性能方面,Type 接口检查能够更快

    特性

    和变量类似,可以在不同的作用域中创建具有相同的名称。

    TypeScript 内置了许多全局类型,将帮助你在类型系统完成常用的任务。

    对象字面量语法( Object Literal Syntax )

    复制代码
    type JsonRsponse = {
      version: number;
      outOfStock?: boolean; // 可选属性
      readonly body: string; // 只读属性
      /** In bytes */
      payloadSize: number;  // 编辑器注释提示
      update: (retryTimes: number) => void; // 箭头函数方法
      update2(retryTimes: number): void; // 方法
      (): JsonRsponse; // 函数
      [key: string]: number; // 接受字符串索引,值为number
      new (s: string): JSONResponse; // 构造函数 
    }
    复制代码

    这些对象字面量的语法和 Interface 的没有区别,详情可阅读我另一篇 Interface 随笔。https://www.cnblogs.com/lxrNote/p/16953606.html

    原始类型( Primitive Type )

    type SanitizedIput = string
    type MissingNo = 404

     

    元组类型(Tuple Type)

    元组是知道明确下标的特殊数组
    type Data = [
      location: Location,
      timestamp: string
    ]

    联合类型(Union Type)

    联合类型是描述众多类型之一
    type Size = "small" | "medium" | "large"

    交叉类型(Intersection Types)

    一种扩展/合并的方法
    type local = { x: number } & { y: number }
    // local {x:number;y:number}

    索引类型(Type Indexing)

    如果其它类型别名是引用类型,可以通过索引获取其值类型

    type Res = { data: { x: string } }
    type Content = Res["data"]
    // Conent {x:string}

    类型来自值(Type from Value)

    重用通过 typeof 运算符取出值在JavaScript 运行时的类型
    const data = { x: 123 }
    type Content2 = typeof data
    // Content2 = { x: number }

    类型来自方法返回值(Type from Func Return)

    重用方法的返回值作为类型,ReturnType 是内置全局类型
    const createFixtures = ()=>{ return 123}
    type Fixtures = ReturnType<typeof createFixtures>
    // Fixtures = numer

    类型来自模块(Type from Module)

    const data: import("./data").data

     没看懂,知道的朋友指导下。。。。。。

    映射类型(Mapped Types)

    复制代码
    type Artist = {name: string,bio: string}
    type Subscriber = {
      // 循环遍历泛型参数 Type 的每一个字段
      [Property in keyof Type]:
      (nv: Type[Property]) => void
      //设置类型为一个函数,原始类型为参数
    }
    type ArtisSub = Subscriber
    // { name: (nv: string)=>void, bio: (nv:string)=>void }
    复制代码

    条件类型(Conditional Types)

    在类型系统中充当 if 语句,通过泛型创建,通常用于减少联合类型中的选项数量。
    复制代码
    type HasFourLegs = Animal extends { legs: 4 } ? Animal : never
    type Bird = { cry: '唧唧喳喳', legs: 2 }
    type Dog = { cry: '汪汪汪', legs: 4 }
    type Ant = { cry: '...', legs: 6 }
    type Wolf = { cry: '嗷呜~', legs: 4 }
    type Animal = Bird | Dog | Ant | Wolf
    type FourLegs = HasFourLegs
    // FourLegs = Dog | Wolf
    复制代码

    模板联合类型(Template Union Types)

    字符串模板可以用来组合和操纵类型系统中的文本
    复制代码
    type SupportedLangs = "en" | "pt" | "zh";
    type FooterLocaleIDs = "header" | "footer";
    
    type AllLocaleIDs = `${SupportedLangs}_${FooterLocaleIDs}_id`;
    // "en_header_id" | "en_footer_id" | "pt_header_id" | "pt_footer_id" | "zh_header_id" | "zh_footer_id"
    复制代码

     

    感谢观看,欢迎互相讨论与指导,以下是参考资料链接🔗

    https://www.typescriptlang.org/static/TypeScript%20Types-ae199d69aeecf7d4a2704a528d0fd3f9.png

     

     

  • 相关阅读:
    疫情联防联控解决方案-最新全套文件
    jenkins操作手册——巨详细,一篇足矣
    Go 语言代码断行规则详解
    学习ArkTS -- 状态管理
    每日一题 2586. 统计范围内的元音字符串数(简单)
    使用MyBatis框架进行关系型数据库操作
    pointpillars pytorch的安装运行
    JavaFX:Insets在控件中使用简例
    学习并了解MQ消息队列
    相似度检索Faiss模型
  • 原文地址:https://www.cnblogs.com/lxrNote/p/16955779.html