美文网首页js css html
TS-3 type 和 interface

TS-3 type 和 interface

作者: RickyWu585 | 来源:发表于2023-03-10 18:06 被阅读0次
    • type是类型别名,并不是真正的类型
    • type 声明一个带属性的函数:
    type FnWithProps = {
      (a:number,b:number): number,
      props: string
    }
    
    const fn: FnWithProps = (a,b) => a+b
    fn.props = 'xxx'
    
    • interface是声明一个接口描述对象的属性
    interface X {
      age: number
    }
    
    type A1 = Array<string> & {
      name: string
    } & X
    
    等同于
    
    interface A2 extends Array<string>,X {
      name: string
    }
    
    • interface描述函数
    interface FnWithProp {
    (a:number,b:number): number
    prop?: string
    }
    
    const fn:Fn = (a,b) => a+b
    fn.prop = 'xxx'
    
    • interface 描述日期,类型里不能添加属性了
    interface D extends Date {}
    
    const date: D = new Date()
    
    • type不可以重新赋值
    • interface可以重新赋值

    总结区别:

    1. type是类型别名,并不是真正的类型,interface是类型声明,具有真实效果
    2. type可以描述任何类型,interface只针对对象
    3. type不可以重复声明,interface可以重复声明,会自动合并,即可以扩展,比如在axios中扩展config的配置参数类型。因此写的时候一般用interface方便扩展;自己项目的时候一般用type,防止被篡改
    4. type交叉类型功能类似于interface的继承
    5. type功能相对来说更强大,工具类型都是用type来实现的

    相关文章

      网友评论

        本文标题:TS-3 type 和 interface

        本文链接:https://www.haomeiwen.com/subject/kexukdtx.html