好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

条件类型(Conditional Types)

在类型系统中充当 if 语句,通过泛型创建,通常用于减少联合类型中的选项数量。

type HasFourLegs<Animal> = 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<Animal>
 //   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

 

 

查看更多关于TypeScript 之 Type的详细内容...

  阅读:46次