深入浅出TypeScript
1.TypeScript:(1)JavaScript的超集,用于解决大型项目的代码复杂性 (2)强类型,支持静态和动态类型 (3)可以在编译期间发现并纠正错误 (4)不允许改变变量的数据类型
2.基础类型:boolean,number,string,undefined,null,any,unknown,void,never,数组类型,元组类型tuple
3.函数重载:名称相同但参数不同,可通过重载支持多种类型
4.interface定义:接口是为了定义对象类型
5.抽象类:只能被继承,不能被实例化作为基类,抽象方法必须被子类实现
6.interface约束类,使用implements关键字
7.高级类型:联合类型,交叉类型
8.type、interface相同点:都可以定义对象或函数,都允许继承 差异点:interface是TS用来定义对象,type是用来定义别名方便使用;
type可以定义基本类型,interface不行;interface可以合并重复声明,type不行
9.TS泛型工具基础操作符:typeof——获取类型;keyof——获取所有键 in——遍历枚举类型;T【K】——索引访问;extends——泛型约束
10.TS:泛型工具常用工具类型: Partial:将类型属性变为可选;Required:将类型属性变为必选;Readonly:将类型属性变为只读 Pick,Record......
11.声明文件:declare:三方库需要类型声明文件 .d.ts:声明文件定义 @types:三方库TS类型包 tsconfig.json:定义TS的配置
深入理解JS
1.浏览器多进程:Browser进程,GPU进程,插件进程,网络进程,渲染进程
渲染进程:GUI进程,JS进程,事件触发进程,定时器触发进程,网络进程
2.数据类型:(1)对象:数组,函数... (2)基础类型:字符串,undefined,数字,null,symbol,bigint,布尔
3.静态作用域:能够预测代码在执行过程中如何查找标识符 全局,函数,块状作用域区别:变量在不同范围内生效(块状是在括号内范围)
4.变量提升:变量先调用再赋值定义 var有变量提升,let、const没有变量提升,提前访问会报错; function函数可以先调用再定义,赋值给变量的函数无法提前调用;
5.JS执行过程:源代码—(词法分析,语法分析)—AST——字节码—(编译执行优化代码,JIT)—机器码 源代码——执行上下文;字节码—(逐行解释运行)—机器码(这样执行节省内存开销)
6.当JS引擎解析到可执行代码片段(通常是函数调用)的时候,就会先做一些执行前的准备工作, 这个准备工作叫做“执行上下文”,简称EC,也叫执行环境
7.全局执行上下文:代码开始执行时就会创建,将他压执行栈的栈底,每个生命周期内只有一份 函数执行上下文:当执行一个函数时,这个函数内的代码会被编译,生成变量环境,词法环境等, 当函数执行结束时,该执行环境从栈顶弹出
8.JS:(1)单线程(2)动态,弱类型(3)面向对象,函数式(4)解释类语言,JIT(5)安全,性能差
9.JS的语言种类: (1)动态语言(弱类型语言):运行时才确定数据类型的语言,变量在使用之前无需申明类型 (2)静态语言(强类型语言):编译时变量的数据类型就需要确定的语言
10.JS中复杂的数据类型被赋予地址,可被改变,基础数据类型赋值,不被改变.
11.词法环境放函数和被let,const定义的变量;变量环境放被var定义的变量;Outer:指向外部变量环境的指针,形成了作用域链
12.闭包的内存不易被回收.
13.普通函数的this指向window.
14.微任务队列先于宏任务队列执行.
15.JS是单线程的,但是Render线程里面有多个线程;JS线程和GUI线程互斥,执行大的计算任务会导致页面卡顿;
16.基础数据类型存在栈上,复杂数据类型存在堆上;
17.一个执行上下文包括变量环境,词法环境,this;this和执行上下文绑定.