首页 前端知识 TypeScript中 interface 和 type 的区别

TypeScript中 interface 和 type 的区别

2024-05-28 09:05:52 前端知识 前端哥 280 442 我要收藏

区别1

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

区别2

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

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

interface User{
	name: string
}
interface User{
	age: number
}
let Person: User = {
	name: 'myName',
	age: 100
}

type:再次声明会报错

type User = {
	name: string
}
type User = {  // 报错,Throw error: Duplicate identifier
	age: number
}

区别3

  • 继承方式的不同,interface通过extend方式继承,type通过 & 符号继承;

interface

interface PointX {
    x: number
}
interface Point extends PointX {
    y: number
}

type

type PointX = {
    x: number
}
type Point = PointX & {
    y: number
}

interface 和 type 可以相互拓展

interface

type PointX = {
    x: number
}
interface Point extends PointX {
    y: number
}

type

interface PointX {
    x: number
}
type Point = PointX & {
    y: number
}

注意:

  1. 如果希望定义一个变量类型,就用 type,如果希望能够继承并约束,就用 interface。
  2. 如果您是库的作者或为外部库创建类型定义,请使用 interface。方便其他人也可以扩展它们。
  3. 如果你不知道该用哪个,建议使用 type。
转载请注明出处或者链接地址:https://www.qianduange.cn//article/9773.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!