青训营笔记

60 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天 js属于动态类型 ts属于静态类型 他们都属于弱类语言

静态类型: 可读性增强:基于语法解析TSDoc,ide增强 可维护性增强:在编译阶段暴露大部分错误 多人合作的大型项目中,获得更好的稳定性和开发效率

JS的超集: 包含于兼容所有Js特性,支持共存 支持渐进式引入与升级

基础数据类型 字符串,数字,布尔值,null,undefined

对象类型 只读属性:约束属性不可在对象初始化外赋值:readonly jobId:number; 可选属性:定义该属性可以不存在:hobby? : string; 任意属性:约束所有对象属性都必须是该属性的子类型:[key: string] : any;

函数类型: 函数重载: 对getDate函数进行重载, timestamp为可缺省参数 不能将类型"(type: any, timestamp: any) => string | Date"分配给类型"IGetDate‘ 不能将类型"“string | Date”分配给类型“string"。 不能将类型"Date"分配给类型“string"。ts (2322)

数组类型: 「类型+方括号」表示 浮型表示 元祖表示 接口表示

typescript补充类型: 空类型,表示无赋值 任意类型,是所有类型的子类型 枚举类型,支持枚举值到枚举名的正,反映射 泛型

高级类型: 索引类型:关键字【keyof】,其相当于取值对象中的所有key组成的字符串字面量,如 type lKeys = keyof { a: string; b: number }; //关键字【in】,其相当于取值字符串字面量中的一种可能,配合泛型P,即表示每个key /关键字【?】,通过设定对象可选选项,即可自动推导出子集类型

函数返回值类型 关键字【extends】跟随泛型出现时,表示类型推断,其表达可类比三元表达式如T===判断类型?类型A:类型B 关键字【infer】出现在类型推荐中,表示定义类型变量,可以用于指代类型 如该场景下,将函数的返回值类型作为变量,使用新泛型R表示,使用在类型推荐命中的结果中