TS中,到底用`type`还是`interface`呢?

结论

直接说结论,用type一把梭即可,接下来我一一解释

为什么定义对象都要使用type呢?

如图所示,我鼠标悬浮后,并不知道里面是什么东西

只能获取结果时调出代码提示,或者ctrl + 鼠标左键进入,查看类型定义

那么我用type呢?

可以看到,现在鼠标悬浮能直接查看类型定义了

这一点是让我最受不了的,所以直接选择type即可

区别

1. 如何继承

先看看interface,通过extends关键字

type,则通过交叉类型,都能用,不过interface我认为好看点

2. 其他特性

当interface重写时

  • 如果有不同的属性,则会添加;
  • 如果是相同的属性但是类型不同,则会报错

这点有好有坏,当你不小心名字重复了,那你就容易出问题

但同时利于扩展,不过没有人会这么写吧?

直接去原来的接口添加属性不行吗?

3. type独有的优势

除了上面的悬浮能查看具体类型外,type还提供了很多的关键字使用,这是interface不具备的

比如in关键字,用来枚举类型

这里我写个删除属性的泛型,和Omit一样的,但是interface不支持

此外还有很多TS特有的关键字,都只能通过type使用,比如infer等

不过这也符合直觉,因为interface就是定义一个类型而已

经过以上探讨,可以得出一个结论,那就是interface能做的,type都支持,而且做的比他更好

相关推荐
m0_敲代码的彭于晏16810 小时前
Vercel 前端部署平台深度评测
前端
怕浪猫11 小时前
外包和大厂的前端代码,差在凌晨三点
前端·面试·github
m0_敲代码的彭于晏16812 小时前
Vercel 前端部署与全栈开发实战指南
前端·状态模式
徐小夕12 小时前
花了3个月,我们做了一款 AI 版的“飞书文档”
前端·算法·github
贾伟康12 小时前
【化学实验室|17】HarmonyOS ArkTS 亮暗色与视觉令牌实战:集中颜色、间距和交互状态避免页面割裂
前端·移动开发·harmonyos·arkts·arkui
Csvn13 小时前
SSR/SSG/ISR(上):峡谷与渲染策略的时间预算
前端
Csvn13 小时前
SSR/SSG/ISR(下):可交互性、新鲜度与回源账
前端
Elcker15 小时前
YnuoAgent(依诺):一个 npm 包,跑起属于自己的 AI 研发平台
前端·人工智能·npm
计算机魔术师16 小时前
发现2天,修复2个月:AI挖穿PHP后,卡兹克讲透攻防时间差
前端
风骏时光牛马16 小时前
测试标题001
前端