type和interface的主要区别

type和interface有什么区别

相同

实际上如果只用于标明类型的话,type基本可以实现interface的所有功能

继承(泛化)

interface

typescript 复制代码
interface a { name: string; }
interface b extends a { sex: string; }

type

typescript 复制代码
type a = { name: string; }
type b = a & { sex: string; }

标明函数类型以及函数重载

interface

typescript 复制代码
interface a {
  (): void; // 普通调用
  (a: string): void; // 重载

  new(): Date; // 构造函数
}

type

typescript 复制代码
type a = {
  (): void; //普通调用
  (a: string): void; //重载

  new(): Date; // 构造函数
}

// 或者这样写构造函数
type a = new () => Date;

最大的不同

但是interface强大的地方就在于,它可以扩展全局对象,当然这也与interface合并特性有关。也是和type的主要区别。

举个例子

给全局Date对象加个format

typescript 复制代码
interface Date {
  format(template: string): string
} 

当然如果你想给Date构造函数添加一个format

typescript 复制代码
interface DateConstructor {
  format(template: string): string
}

在线看

当然interface作为接口的话,那还有一个特性就是implements之后,必须被实现。这也是和type的一个区别。

相关推荐
kgduu2 分钟前
js之错误处理
开发语言·前端·javascript
德莱厄斯2 分钟前
Milkup 技术内幕:一个 Typora 风格的即时渲染 Markdown 编辑器是怎样炼成的
前端·javascript·markdown
Mintopia12 分钟前
架构师的心胸:把分歧装进系统,把人放在方案前
前端·架构
亿元程序员13 分钟前
不是说现在AI很牛吗,怎么连个高光Shader效果都写不好?
前端
孟祥_成都16 分钟前
金三银四,一个面试官连连夸赞的个人网页技术分享
前端·面试·three.js
兆子龙23 分钟前
Vite 插件系统与构建流水线源码解析:从 Rollup 插件到 HMR
前端
代码老中医29 分钟前
Node_modules 比黑洞还重,我们的硬盘到底做错了什么?
前端
兆子龙29 分钟前
Vue 3 响应式系统 Reactivity 源码深度解析:从 ref 到 effect 的完整链路
前端
Smoothcloud_润云32 分钟前
GORM 事务管理与 Repository 模式完整指南
前端·数据库·代码规范
兆子龙32 分钟前
Turborepo 与 Monorepo 任务调度源码解析:从 DAG 到增量构建
前端·架构