Typescript
any、unknown 与 never
- any,unknown在ts类型层级中属于最顶层top type,也就意味着所有类型都是它两的子类型,never相反,作为bottom type它是所有类型的子类型
- 为什么需要top type和bottom type:在实际开发中,我们不可能确保对所有地方的类型都能精准描述,因此需要一个top type来表示一个包含任意类型的类型
type和interface的区别
- 在对象扩展情况下,interface使用extends关键字,而type使用交叉类型&
- 同名的interface会自动合并,并在合并时要求兼容原接口的结构
- interface和type都可以描述对象类型,函数类型,class类型,但interface无法像type那样表达元组,一级联合类型等
- interface无法用映射类型等类型工具,也就意味着在类型编程场景我们还是用type
更优回答
- interface就是描述对象对外暴露的接口,其不应该具有过于复杂的类型逻辑,最多局限于泛型约束与索引类这个层面
- type alias就是用于将一组类型的重命名,或者对类型进行复杂编程
工具类型的实现
type Partial<T extends objecet> = {
[K in keyof T]?: T[K]
}Updated on 6/12/2023
Table of Contents