Typescript中type和interface到底有何区别

Typescript中type和interface到底有何区别

使用过ts的伙伴都知道,在一些类型定义,使用type和interface都可以实现相同的效果,但是我们在使用中其实很少会去关注他们的区别点,今天趁着有空,我来学习总结一哈

  1. 相同点

    1. 都可以用来描述一个对象或者函数
    // interface
    interface Info {
      name:string;
      age:number;
    };
    
    interface SetInfo {
      (name:string,age:number):viod
    };
    
    // type
    type UserInfo = {name:string; age:number};
    
    type SetUserInfo = (name:string,age:number):viod;
    
    1. 都允许扩展
    // interface 扩展 interface
    interface Name {
      name: string;
    }
    
    interface Info extends Name {
      age:number
    }
    
    // interface 扩展 type
    type Name  = {
      name: string;
    }
    
    interface Info extends Name {
      age:number
    }
    
    // type 扩展 type
    type Name  = {
      name: string;
    }
    
    type Info = Name & {age: number}
    
    // type 扩展 interface
    interface Name {
      name: string;
    }
    
    type Info = Name & {age: number}
    

    区别是,interface使用关键字extends扩展,type使用&符号连接

  2. 不同之处

    1. interface支持声明合并
    interface Info {
      name: string;
    }
    
    interface Info {
      age: number;
    }
    
    // 实际上的接口Info是
    {
      name: string;
      age: number;
    }
    
    1. type不但可以声明基本类型别名,除此之外还可以申明联合类型、元祖等类型
    // 基本类型别名
    type Name = string;
    
    // 联合类型
    type Name = string;
    type Age = number;
    type Info =  Name | Age
    
    // 元祖类型
    type Name = string;
    type Age = number;
    type Info =  [Name , Age]
    
    1. type的其它用法
    // 泛型变量
    type Callback<T> = (data: T) => void;  
    // Pair是一个泛型变量
    type Pair<T> = [T, T]; 
    // 下面这个就相当于type Coordinates = [number, number]; Coordinates是一个接受number参数类型的数组
    type Coordinates = Pair<number>;  
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值