当前位置: 首页 > news >正文

TypeScript学习第十六篇 - interface和type的区别?

在 TypeScript 中,interface 和 type 都用于定义自定义类型,但它们有一些关键区别:

1. 主要区别

1.1. 语法差异

interface 使用 interface 关键字。

interface Person {
  name: string;
  age: number;
}

type 使用 type 关键字。

type Person = {
  name: string;
  age: number;
};

1.2. 扩展方式

interface 使用 extends 扩展。

interface Animal {
  name: string;
}

interface Dog extends Animal {
  breed: string;
}

type 使用交叉类型 & 扩展。

type Animal = {
  name: string;
};

type Dog = Animal & {
  breed: string;
};

1.3. 合并声明

interface 支持声明合并,相同名称的接口会自动合并。

interface User {
  name: string;
}

interface User {
  age: number;
}

// 最终 User 包含 name 和 age

type 不允许重复声明,会报错

2. 功能差异

2.1. type 能做而 interface 不能的

定义基本类型别名。

type ID = string | number;

定义元组类型。

type Point = [number, number];

使用 typeof 获取实例类型。

const person = { name: 'Alice', age: 30 };
type Person = typeof person;

2.2. interface 的优势

1. 更好的错误提示信息(通常更清晰);

2. 更适合面向对象编程,特别是与类一起使用时;

3. 声明合并特性在某些场景下非常有用(如扩展第三方库类型);

3. 使用建议

1. 优先使用 interface,除非需要 type 的特定功能;

2. 需要联合类型、元组或映射类型时使用 type;

3. 需要扩展第三方类型或需要声明合并时使用 interface;

4. 在库或公共 API 定义中使用 interface,因为它更易扩展;

两者在大多数情况下可以互换,选择主要取决于具体需求和团队约定。

相关文章:

  • 【在线OJ项目测试报告】
  • 第十章Python语言高阶加强-SQL(数据库)
  • windows AndroidStudio上传maven中央仓库
  • MySQL约束详解:从入门到精通
  • java.util.Collections中常用api
  • Systemd安全加密备份系统与智能通知
  • 深信服Python开发面经及参考答案(110道题)
  • 第十四届蓝桥杯省赛真题解析(含C++详细源码)
  • 常见框架漏洞(五)----中间件IIS6
  • 罗米:《俄罗斯博物馆之旅》
  • 【C++11】异常
  • C语言学习笔记-9
  • Redis-x64-3.2.100.msi : Windows 安装包(MSI 格式)安装步骤
  • MessageQueue --- RabbitMQ可靠传输
  • [项目总结] 在线OJ刷题系统项目技术应用(下)
  • 同花顺客户端公司财报抓取分析
  • 【AI Infra】【RLHF框架】四、VeRL中PPO、GRPO、REINFORCE++、RLOO实现源码解析
  • Spring 怎么解决循环依赖问题?
  • 室内指路机器人是否支持与第三方软件对接?
  • 2025年渗透测试面试题总结-某四字大厂面试复盘扩展 二面 (题目+回答)
  • 湛江网站建设皆选小罗23/关联词有哪些五年级
  • wordpress托管在哪里/seo顾问是什么职业
  • 网站建设团购/西安百度推广外包
  • 长沙做门户网站的公司/微信群推广
  • 河南监理建设协会网站/百度品牌
  • 坂田网站建设/镇江抖音seo