TypeScript &react 基础| 青训营

49 阅读2分钟

ts包含js,用于大型项目,强类型,支持静态、动态类型,编译期间就可以发现并纠正错误,不能改变变量数据类型

基础

基础类型

  1. boolean、number(包括整数、浮点数、复数)、string
  2. 特有的枚举类型enum
  3. any、unknown(只允许被复制)、void
  4. never(永远不存在)
  5. 数组[]
  6. 元组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