Typescript入门|青训营笔记 这是我参与【第四届青训营】笔记创作活动的第2天
- Javascript:动态类型、弱类型语言(执行时才进行类型匹配)
- Typescript:静态类型、弱类型语言(需要先走一次编译流程然后才能执行)、兼容所有Js特性、支持共存
- 静态类型:可读性增强、可维护性增强(暴露出大部分错误)
- 基本语法:
- 字符串(定义方法):const q:string='string';
- 数字:const w:number=1;
- 布尔值:const e:boolean=true;
- null:const r:null=null;
- undefined:const t: undefined=undefined;
- 对象类型
- I开头表示一个类型
- 函数声明类型代码:
function add(x:number,y:number): number{ return x+y; }
- 数组类型
- 类型+方括号表示:
- type IArr1 = number[];
- 泛型表示:
- type IArr2 = Array<string|number|Record<string,number>>;
- 元祖表示:
- type IArr3 = [number,number,string,string];
- 接口表示:
- interface IArr4{[key:number]:any;}
- const arr1:IArr1=[1,2,3,4,5,6,7,8];
- const arr2:IArr2=[1,2,'3','4',{a:1}];
- const arr3:IArr3=[1,2,'3','4'];
- const arr4:IArr4=['string',()=>null,{},[]];
- 空类型,表示无赋值、任意类型,是所有类型的子类型、枚举类型,支持枚举值到枚举名的正、反向映射
- 泛型约束:限制泛型必须符合子字符串
- 报错:类型“number"的参数不能付给类型”string"的参数
- 未指定类型时,result类型为{}*/
- 通过as关键字,断言result类型为正确类型
- 允许指定字符串,数字必须是固定的值
- 高级类型
- 高级类型把普通类型解决方案变得更优雅
- 联合/交叉型列表:为书籍列表编写类型,类型声明繁琐,存在较多重复
- 联合类型:联合类型表示一个值可以是几种类型之一
- 交叉类型:多种类型叠加到一起成为一种类型,它包含所需的所有类型的特性(公共对象子集只需要写一次)公共部分和未公共部分做一个交叉
- 类型保护与类型守卫
- 高级类型