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。
相关推荐
xuhaoyu_cpp_java10 小时前
项目学习(三)分页查询
java·经验分享·笔记·学习
想吃火锅100510 小时前
【leetcode】405.数字转换为十六进制数js
开发语言·javascript·ecmascript
程序员二叉10 小时前
【Java】集合面试全套精讲|HashMap/ArrayList高频考点完整版
java·面试·哈希算法
专注VB编程开发20年11 小时前
AI 生成C# WinForm 窗体 = 目前就是垃圾
开发语言·人工智能·c#
cfm_291411 小时前
JVM GC垃圾回收初步了解
java·开发语言·jvm
心之伊始11 小时前
LangChain4j RAG 实战:Java 后端如何把本地文档接入 Embedding 检索链路
java·架构·源码分析·csdn
~小先生~11 小时前
Python从入门到放弃(一)
开发语言·python
许彰午11 小时前
17_synchronized关键字深度解析
java·开发语言
z落落11 小时前
C# 泛型接口和泛型类+泛型约束
开发语言·c#
阿正的梦工坊11 小时前
【Rust】02-变量、不可变性与基础类型
开发语言·后端·rust