聊聊TypeScript中的type和interface

        作为一名前端开发,免不了工作中要或多或少的使用ts,除去一些即为复杂的体操和类型转换以外,我们用的最多的可能就是接口(interface)和类型(type)定义

很多不常用ts或者刚使用ts的同学可能会有这样的疑问,type和interface都可以用来描述一个类型,功能上有很多的相似性,但是二者之间有什么区别呢,二者又分别应该在什么场景下使用呢?

 今天咱们就来聊聊这两者之间的异同之处

基本定义

首先,看下ts官网对二者的基本定义

  •  type类型

  • interface接口

好像官网对这二者之间的定义也是十分模糊,其实本质就是为了定义和约束数据结构,保证类型的安全和数据结构的复用

相同点和联系

二者都可以用于描述对象类型, 并且定义对象中的属性和类型

两者都支持继承其他的类型或者接口, 通过extends 继承或者&

ts的编译器都会对二者定义的类型进行类型推断

不同点以及使用场景

  • interface可以重复进行声明, type定义后不支持重复声明

ps: interface在同一命名空间中多次声明会被合并为同一个接口,并包含定义过的所有属性,type不支持声明合并,重复定义会报错

 

  • interface通过extends来继承接口, type只能通过&来合并从而实现模拟继承的效果

 

  • type的定义更为灵活,不但可以表示对象类型,也可以定义非对象类型, interface只能定义对象类型,但interface可以通过接口来扩展类型

  • type定义对象是引用, interface定义对象是定义
  • type可以使用key in type等操作符创建映射类型, interface则不支持直接创建映射类型

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值