1.TS基础类型有哪些?any void unknown never的区别?
any 、Number、String、Boolean、Array 、元组、枚举、void、undefined、null、never
any: 可以赋予任意类型的值,不进行类型检查,尽量不要用any
void: 表示函数没有返回值
unknown:未知类型,可以赋值为任何值,是一个更加安全的any,可以用as转成要用的类型。
never: 是其他类型,代表从不会出现的值
2.# 和private有什么区别?
- #属性,不能在构造函数参数里定义
- private可以通过as any强制获取,但是#属性不行
3. type 和 insterface的区别,以及使用场景?
-
type可以定义基础类型,interface不行
-
type 可以使用联合类型、交叉类型 , interface不行
-
Type 可以 通过 typeof 赋值
type定义类型关系,interface定义数据结构,优先使用interface,再使用type
4.type 和interface的扩展
- interface可以合并声明
- interface可以扩展interface / type
- type用交叉类型扩展type / interface
5.ts中的范型理解
范型可以定义在函数、class、interface、type中,可以传入任何类型,可以当作任何类型来使用
3. 如何扩展window属性,如何设置第三方插件的类型?
可以用declare 声明全局属性,declare module 定义外部模块