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

相关推荐
appearappear9 分钟前
wkhtmltopdf把 html 原生转成成 pdf
前端·pdf·html
PM老周10 分钟前
2026年Confluence替代软件:企业知识库选型指南
前端·人工智能·编辑器·团队开发
小宇的天下17 分钟前
Synopsys® Technology File(工艺文件)详解
前端
点点开心18 分钟前
攻防世界WEB(新手模式)2-5-web2
前端·学习·安全·web安全·网络安全
谢尔登19 分钟前
React19 渲染流程
前端·javascript·架构·ecmascript
我是伪码农20 分钟前
Vue 1.29
前端·javascript·vue.js
css趣多多21 分钟前
Vue动态组件以及keep-alive的使用
前端·javascript·vue.js
盐真卿24 分钟前
python第五部分:文件操作
前端·数据库·python
晚霞的不甘27 分钟前
Flutter for OpenHarmony《智慧字典》英语学习模块代码深度解析:从数据模型到交互体验
前端·学习·flutter·搜索引擎·前端框架·交互
qq_3363139335 分钟前
javaweb-Ajax
前端·javascript·ajax