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都支持,而且做的比他更好

相关推荐
cypking23 分钟前
Vue 3 + Vite + Router + Pinia + Element Plus + Monorepo + qiankun 构建企业级中后台前端框架
前端·javascript·vue.js
雨雨雨雨雨别下啦1 小时前
【从0开始学前端】vue3简介、核心代码、生命周期
前端·vue.js·vue
simon_93491 小时前
受够了压缩和收费?我作为一个码农,手撸了一款无限容量、原图直出的瀑布流相册!
前端
e***87702 小时前
windows配置永久路由
android·前端·后端
u***27612 小时前
TypeScript 与后端开发Node.js
javascript·typescript·node.js
Dorcas_FE3 小时前
【tips】动态el-form-item中校验的注意点
前端·javascript·vue.js
小小前端要继续努力3 小时前
前端新人怎么更快的融入工作
前端
四岁爱上了她3 小时前
input输入框焦点的获取和隐藏div,一个自定义的下拉选择
前端·javascript·vue.js
fouryears_234173 小时前
现代 Android 后台应用读取剪贴板最佳实践
android·前端·flutter·dart
boolean的主人3 小时前
mac电脑安装nvm
前端