这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
-
2012年微软发布第一个版本
-
js 是动态类型, ts是静态类型, 都是弱类型语言
-
优势:
- 可读性增强, ide增强
- 编译阶段暴露大部分错误
- 多人合作中, 获得更好的稳定性和开发效率
- 兼容所有js特性, 可以与js共存
- 渐进式升级
-
函数重载
function getDate(type:'string',timestamp?:string):string; interface IGetDate{ (type:'string',timestamp?:string):string; (type:'date',timestamp?:string):Date; (type:'string'|'date',timestamp?:string):Date string;} -
数组类型
type IArr1=number[]; /*泛型表示*/ //Record表示对象类型 type IArr2=Array<string number Record<string,number>>; /*元祖表示*/ type IArr3=[number,number,string,string]; /*接口表示*/ //表示对象类型 interface IArr4 [key:number]:any; } -
泛型
//在使用的时候在指定类型 type IGetRepeatArrR = <T>(target: T)=>T[]; //T extends string 限制泛型在字符串类型 //T = number 泛型的默认类型 -
类型断言和|
result as type //将result指定为type //"1"|"2"表示可以是"1"或者"2" -
联合类型和交叉类型 |和& 即类型的与和或
-
访问联合类型时只能访问交集部分, 访问其他部分需要先进行判断
-
keyof 返回对象中的字符串字面量
type IKeys = keyof {a:string; b:string} //"a"|"b" -
in取值字符串字面量的一种可能
-
? 设置类型为可选类型
-
infer :可以从类型中推断类型
type Flatten<Type> = Type extends Array<infer Item> ? Item : Type; type GetReturnType<Type> = Type extends (...args: never[]) => infer Return ? Return : never;
-
内置类型:
- Partial :设置所有类型为可选类型
- Required :设置类型为必选类型
- Readonly : 设置为只读
- Pick : 从一个类型中挑选一些key作为新的类型
- Omit :从一个类型中删除一些key作为新类型
- Exclude :从联合类型中删除能复制给第二个泛型的所有类型
- Extract :从联合类型中提取能复制给第二个泛型的所有类型
- NonNullable :排除null 和undefined
- Parameters :从函数类型中获取参数
- ReturnType :获取函数返回类型