- A+
所属分类:Web前端
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