ts包含js,用于大型项目,强类型,支持静态、动态类型,编译期间就可以发现并纠正错误,不能改变变量数据类型
基础
基础类型
- boolean、number(包括整数、浮点数、复数)、string
- 特有的枚举类型enum
- any、unknown(只允许被复制)、void
- never(永远不存在)
- 数组[]
- 元组tuple(数组的特殊形式)
函数类型
定义时需要定义输入参数类型(可选或默认参数)和输出类型(无返回值默认为void类型)
函数重载:名称相同但参数不同,可用于多种类型
interface接口
定义对象类型
可选属性,只读属性,自定义属性,描述函数类型
类
增加了public、private、protected修饰符
抽象类(只能继承,不能实例化,必须作为基类被子类实现)
关键字implements是接口约束类
进阶
高级类型
- 联合类型 |
- 交叉类型&
- as或者标识符,用于类型断言,省去推断,错误抛出
- 类型别名type
type和interface都可以定义对象或函数,可以被继承
但
interface用来定义对象(可重复合并声明),type用来定义别名(可以定义基本类型)
泛型
支持当前和未来的数据类型,创建可重用的组件
常用类型参数 ,其中可以使用某类型,或者自动推导类型,泛型作用是临时占位
基础操作符
typeof:获取类型
keyof:获取所有键
in:遍历枚举类型
T[K]:索引访问
extends:泛型约束
常用工具类型
partial:将类型属性变为可选
Required:将类型属性变为必选
·Readonly<.T>:将类型属性变只读
Pick、Record
实战
声明文件
declare:三方库需要类型声明文件
.dts:声明文件定义
@types:三方库TS类型包
tsconfig.json:定义TS的配置
------------------------------------------------------
react
声明式,组件化,跨平台编写(只需修改渲染器
快速响应:Fiber
web性能影响原因
1、等待资源加载时间
2、浏览器单线程执行 (js执行会阻塞UI渲染)
只能在最顶层使用hook,在函数中调用,自定义hook必须use开头
更新流程
调度器(优先级调度)、协调器(将JSX转Fiber)、渲染器
开发web
架构 打包配置:JSX 到 babel 到 JS
路由 向应用中快速添加视图和数据流
UI 可复用UI-组件-页面 可复用逻辑抽离成hook