TypeScript 系列 
TypeScript 中 const 和 readonly 的区别?枚举和常量枚举的区别? 
const 和 readonly 的区别
- const 用于
变量, readonly 用于属性 - const 在
运行时检查, readonly 在编译时检查 - const 一旦声明变量,就必须立即初始化
 - const 保证的是变量指向的那个内存地址不得改动,例如使用 const 变量保存的数组,可以使用 push,pop 等方法。但是如果使用 
ReadonlyArray<number>声明的数组不能使用 push ,pop 等方法 
- const 用于
 枚举和常量枚举的区别
- 枚举会被编译时会
编译成一个对象,可以被当作对象使用 - const 枚举会在 typescript 编译期间被删除,生成的 JavaScript 文件中不会存在枚举类型,所有的
枚举成员都会被替换为它们的实际值(常量枚举 会有更好的性能) 
- 枚举会被编译时会
 
TypeScript 中 any、unknown 有什么区别? 
- 相同点:可以为 any, unknown 类型变量分配任何值
 - 不同点:使用 unknown 变量时,TypeScript 会强制执行类型检查
 
对 TypeScript 类中成员的 public、private、protected、readonly 修饰符的理解? 
public: 成员都默认为 public,被此限定符修饰的成员是可以被外部访问;private: 被此限定符修饰的成员是只可以被类的内部访问;protected: 被此限定符修饰的成员是只可以被类的内部以及类的子类访问;readonly: 关键字将属性设置为只读的。 只读属性必须在声明时或构造函数里被初始化。
TypeScript 的类型工具? 
Exclude<T, K>: 用来从联合类型 T 里面,删除某些类型 KExtract<T, K>: 用来从联合类型 T 之中,提取指定类型 KOmit<Type, Keys>: 用来从对象类型 Type 中,删除指定的属性 KeysPick<Type, Keys>: 用来从对象类型 Type 中,选定指定的属性 KeysPartial<Type>: 将参数类型 Type 的所有属性变为可选属性Required<Type>: 将参数类型 Type 的所有属性变为必选属
TypeScript 中 type 和 interface 的区别? 
相同点:
- 都可以描述 '对象' 或者 '函数'
 - 都允许拓展(extends)
 
不同点:
- type 可以声明基本类型,联合类型,元组
 - type 可以使用 typeof 获取实例的类型进行赋值
 - 多个相同的 interface 声明可以自动合并