Typescript中interface和type的区别

Typescript中interface和type的区别

你应该首选interface进行使用(官方建议),如果遇到无法解决的情况,Typescript 会给你一个提示,是否需要另一种声明。

另外,爱好应该是第一位的,如果你喜欢type的工作方式,我建议你选择type。

在说区别之前,我们先来看下一部分写的区别,或者准确的说,这不是区别,而是写法的不同。这一步的主要作用是让初学者更容易分辨喜欢的方式。


定义对象类型(interface写法):

interface State {
  count: number
}

定义对象类型(type写法):

type State2 = {
  count: number
}

定义函数类型(interface写法):

interface func {
  (): void
}

定义函数类型(type写法):

type func2 = () => void

接下来,我将正式解释他们的区别。如果您只是想联想一下,我会创建一个目录供您快速查看。


1:声明合并(interface支持,type不支持)

interface支持

interface people {
  name: string
}

interface people {
  age: string
}

此时,people包含了两个属性。分别为name、age。

type不支持:

type people =  {
  name: string
}

type people = {
  age: string
}

它将导致标识符“people”重复。

2:重命名基元(interface不支持,type支持)

这里的基元看起来似乎很笼统,你可以将它理解为string,number,boolean 等。

interface不支持:

interface Person extends boolean{}

type支持:

type people = boolean

// type people = boolean | sring

在大多数情况下,现在只是写法上有所不同。

正如官方所说的:

type和interface非常相似,在很多情况下您可以在它们之间自由选择。interface的几乎所有功能都可以在type中使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一拖再拖 一拖再拖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值