interface 和 type 的区别

在 TypeScript 中,interface 和 type 都可以用来定义类型。它们的主要区别在于:

  • interface 可以被继承和实现,而 type 不行;
  • type 可以定义更复杂的类型,比如交叉类型和联合类型;
  • interface 可以定义多个同名接口,会自动合并属性,而 type 不行。

具体来说,当你想要定义一个对象的类型时,通常使用 interface。而当你需要定义更复杂的类型时,比如联合类型、交叉类型、元组类型等,你就需要用到 type。

例如,下面是一个使用 interface 定义对象类型的简单示例:

interface User {
  id: number;
  name: string;
  age?: number;
  sayHello(): void;
}

const user: User = {
  id: 1,
  name: 'Tom',
  sayHello() {
    console.log('Hello');
  },
};

在上面的示例中,我们使用 interface 定义了一个名为 User 的对象类型,它包含了 id、name、age 和 sayHello 四个属性。然后,我们使用 User 类型定义了一个名为 user 的对象。

如果你想要定义一个更复杂的类型,比如联合类型或交叉类型,你可以使用 type 来定义。例如:

type MyUnionType = string | number;

type MyIntersectionType = { id: number } & { name: string };

type MyTupleType = [string, number];

在上面的示例中,我们使用 type 定义了三种复杂类型:联合类型 MyUnionType、交叉类型 MyIntersectionType 和元组类型 MyTupleType。这些类型使用了 type 独有的语法,可以更加灵活地定义不同类型的结构。

以上。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值