ts type interface 区别_详解typescript中接口interface和类型别名type的用法区别

本文聚焦TypeScript开发,探讨类型别名type和接口interface的异同。二者定义普通对象类型和函数类型时差异不大,但定义简单类型时type更灵活;interface可被类实现,type则不行;type能使用联合、交叉类型等,还可结合typeof。总结了不同场景下的使用建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近本文作者在用typescript开发代码时发现接口interface和类型别名type用法很像,这篇文章我们就来聊聊这两个用法的异同点。

异同点

a78b7458d29e4ea5974e1fbd776aab61

图1

从图1中我们发现接口interface和类型别名type在定义一个普通的对象类型时没啥区别,泛型都能照常用。

如果我们定义一个简单类型呢?

9e3eab632b6844ecaa7e59381b3c2661

图2

如图2所示,像这样的简单类型的定义,type用起来就很随意,但是interface恐怕就无法做到了。

59d1cba168f6484bbf21b321c324d2e1

图3

如图3,它们两都可以轻松实现一个函数的类型,写法稍微有点区别,但是它们都能被类class实现吗?

23fb763dcc4147bc966a8e66fe03193b

图4

如图4所示,接口interface可以被一个类class实现(implements),但是类型别名是不行的。

d288252c37cb43d097e42df683513d02

图5

类型别名type不但不能被extends和implements,就连自己也不能extends和implements其它类型,好在我们可以用交叉类型代替extends来达到同样的效果。

说到这里,你就会发现type可以使用联合类型、交叉类型还有元组等类型,如下图。

57f32be5712d426cbec1a075bdae0c31

图6

个人认为类型别名type最大的特点是可以结合typeof使用,如下:

e5df48c43184448882e4cf1c2eac4a92

图7

总结

这篇文章主要总结了typescript中类型别名type和接口interface在使用上的一些区别,在类class的类型定义中我们使用接口interface来做,在定义简单类型、联合类型、交叉类型、元组时我们用类型别名type来做,并且它和typeof能够天然的结合在一起使用。在双方都能实现的区域,它们的区别不大。

喜欢我的文章就关注我吧,有问题可以发表评论,我们一起学习,共同成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值