一 聊聊typescript的核心原理
TypeScript 是一种基于 JavaScript 的强类型编程语言,它使得在前端项目开发过程中更加严谨且流畅,一定程度上保证了大型前端项目程序的健壮性。
但是 TypeScript 并不可以直接运行,而是需要转换成 JavaScript 代码才可以在 Node.js 或浏览器环境下执行,因此我们需要通过“编译器”将 TS 代码转换为 JS 代码。
Scanner扫描器:词法分析,生成token流
 Parser解析器:生成AST
 Binder绑定器:创建Symbol关联AST,形成语义
 Checker检查器:类型检查
 Emitter发射器:输出编译后的文件
- 对于源代码,TS首先对它进行词法分析,通过scanner进行逐词扫描,生成token流
- 对于scanner生成的token,parser会对其进行组装并生成一棵AST
- binder会生成symbol(符号),并为AST上的每一个节点绑上相应的symbol
- checker检查处理后的AST,利用其进行语法检查
- emitter根据最终的AST生成JS代码和声明文件(d.ts)
二 盘点typescript的常用类型类型特点
1.const 防止变量值被修改,readOnly防止变量的属性被修改。
2.TypeScript中any、never、unknown、null & undefined 和 void 有什么区别?
 any 可以定义任意变量动态变量(失去了检查作用)。
 never 可以定义抛出异常或用不存在的类型。
 unknown 任何值都可赋值给unknown类型,但unknown只能复制给unknown和any。
 void 没有任何类型
 null & undefined 默认情况下这两个是所有类型的子类型,但是当你指定了 --strictNullChecks