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的一个区别。

相关推荐
神奇的程序员2 小时前
开发了一个管理本地开发环境的软件
前端·flutter
XiYang-DING3 小时前
HTML 核心标签
前端·html
Csvn3 小时前
技术选型方法论
前端
Csvn3 小时前
前端架构演进:从页面到平台的十年变革
前端
李伟_Li慢慢4 小时前
ShaderToy-山峦+蓝天+白云
前端·webgl
小码哥_常4 小时前
Android字体字重设置全攻略:XML黑科技+Kotlin动态实现,告别.ttf臃肿
前端
言萧凡_CookieBoty5 小时前
AI 编程省 Token 实战:从 Spec、上下文工程到模型分层的降本策略
前端·ai编程
DFT计算杂谈6 小时前
wannier90 参数详解大全
java·前端·css·html·css3
铁皮饭盒7 小时前
第2课:5分钟!用 Trae AI 生成你的第一个后端服务(Bunjs + Elysia)
前端·后端·全栈