TypeScript中 interface 和 type 的区别

区别1

  • 使用 interface 和 type 都是表示给定数据结构的常用方法。
  • 定义的方式略有不同。
  • type 定义的时候有 "=" 符号
typescript 复制代码
interface User {
	name: string,
	age: number
}
type User = {
	name: string,
	age: number
}

区别2

  • interface 可以多次声明同一接口。它们将合并在一起形成一个接口定义。
  • type 只能声明一次。

interface:可以多次声明,并最终可共同复用;

typescript 复制代码
interface User{
	name: string
}
interface User{
	age: number
}
let Person: User = {
	name: 'myName',
	age: 100
}

type:再次声明会报错

typescript 复制代码
type User = {
	name: string
}
type User = {  // 报错,Throw error: Duplicate identifier
	age: number
}

注意:

  1. 如果希望定义一个变量类型,就用 type,如果希望能够继承并约束,就用 interface。
  2. 如果您是库的作者或为外部库创建类型定义,请使用 interface。方便其他人也可以扩展它们。
  3. 如果你不知道该用哪个,建议使用 type。
相关推荐
陈文锦丫17 小时前
MQ的学习
java·开发语言
乌暮18 小时前
JavaEE初阶---线程安全问题
java·java-ee
爱笑的眼睛1118 小时前
GraphQL:从数据查询到应用架构的范式演进
java·人工智能·python·ai
liwulin050618 小时前
【PYTHON-YOLOV8N】如何自定义数据集
开发语言·python·yolo
Seven9718 小时前
剑指offer-52、正则表达式匹配
java
代码or搬砖18 小时前
RBAC(权限认证)小例子
java·数据库·spring boot
青蛙大侠公主18 小时前
Thread及其相关类
java·开发语言
爱吃大芒果18 小时前
Flutter 主题与深色模式:全局样式统一与动态切换
开发语言·javascript·flutter·ecmascript·gitcode
Coder_Boy_18 小时前
DDD从0到企业级:迭代式学习 (共17章)之 四
java·人工智能·驱动开发·学习
2301_7683502318 小时前
MySQL为什么选择InnoDB作为存储引擎
java·数据库·mysql