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

最新文章

  1. js对Cookie的读写操作
  2. Elasticsearch 教程--入门
  3. CI(CodeIgniter)框架入门教程——第二课 初始MVC
  4. 18. 求交错序列前N项和
  5. linux安装.run
  6. Java邮件服务学习之二:SMTP和POP3
  7. s实现指定时间自动跳转到某个页面
  8. 进程占用百分百CPU不卡(从未试过,当别的程序运行的时候,当前程序还会运行吗?)
  9. jsoup的介绍使用(转)
  10. Oracle存储过程和自定义函数
  11. vue移动端组件库vux使用小记
  12. Stm32串口通信(USART)
  13. 美团2018年CodeM大赛-初赛B轮 C题低位值
  14. 负载均衡+session共享(memcached-session-manager实现)
  15. Z30云台PC控制问题
  16. 关于Newtonsoft.Json,反序列化jason,内容有key的转换
  17. SQL HAVING 子句使用
  18. springboot activiti 配置项详解
  19. C# delegate (1)
  20. [spark] spark 特性、简介、下载

热门文章

  1. 关于Loki中promtail组件收集日志的几点思考
  2. 记录阿里云安全组设置遇到的奇葩问题--出口ip
  3. Spring mvc源码分析系列--Servlet的前世今生
  4. jmeter录制登录脚本
  5. PAT (Basic Level) Practice 1012 数字分类 分数 20
  6. CSS基础-关于CSS注释的添加
  7. TDengine的数据建模?库、表、超级表是什么?怎么用?
  8. SpringBoot实战派读书笔记---响应式编程
  9. 齐博x1页面报数据表错误如何修复
  10. 【ps下载与安装】Adobe Photoshop 2022 for Mac v23.5 中文永久版下载 Ps图像编辑软件