1为什么要学习TS
TypeScript是JavaScript的超集,具有可选的类型并可以编译为纯JavaScript。
从技术上讲TypeScript就是具有静态类型的 JavaScript
TS带来了什么
·类型安全
·下一代JS特性
·完善的工具链
2TS基础
基础类型
1Boolean、number/string
2枚举enum
TS中特有的类型:对枚举值做类型定义 数字枚举、数值映射 3any、unknown、void any作为类型可以涵盖您想要的任何内容,unknown是其类型安全的对应对象。
转义类型时,any都将任何JavaScript变量赋给它。经常用于对尚未检查且类型未知的传入变量时。
unknown只允许反向赋值
4never 永远不存在的值的类型,例如将引发异常的函数。
防御性编程的场景使用
5数组类型 根据技术类型和对象类型增加标识和定义
6元组类型 tuple
特殊的数组类型
函数类型
定义
输入参数
输出参数
函数重载
interface接口
定义:接口是为了定义对象类型 特点: ·可选属性
·只读属性:readonly
·可以描述函数类型
·可以描述自定义属性
接口非常灵活
类
定义:写法和JS差不多,增加了一些定义
特点:
·增加了public、private、protected修饰符
·抽象类:
(1)只能被继承,不能被实例化
(2)作为基类,抽象方法必须被子类实现
·interface约束类使用implements关键字
3TS进阶
高级类型
联合类型丨
交叉类型&
类型断言
标识符:属性前置;arg
类型别名(type vs interface)
定义:给类型定义一个别名
相同点: (1)都可以定义对象或函数
(2)都允许继承
差异点: (1)interface是TS用来定义对象,type是用来定义别名方便使用 (2)type可以定义基本类型。interface不行 (3)interface可以合并重复申明,type不行
interface是接口概念,描述对象;type是类型别名概念
泛型
什么时候需要泛型
基本定义:
(1)泛型的语法是<>里面写类型参数,一般用T表示;
(2)使用时有两种方法指定类型:
·定义要使用的类型
·通过TS类型推断,自动推到类型
(3)核心:泛型的作用是临时占位,之后通过传来的类型进行推导
基础操作符
·typeof:获取类型
·keyof:获取所有键
·in:遍历枚举类型
·T[K]:索引访问
·extends:泛型约束
常用工具类型
4实战&工程向
声明文件
· declare:三方库需要类型声明文件
· .d.ts:声明文件定义
· @types:三方库类型包
· tsconfig.json:定义TS的配置