在TS中type和interface的区别

基本语法不同

interface主要定义对象形状的,type可以定义任意类型,包括原始类型,联合类型

type user {
name: string;
age:number
}

interface User{
name: string;
age:number
}

扩展方法不同

interface扩展使用的是extends继承

interface Animal {
  name: string;
}
interface Dog extends Animal {
  breed: string;
}

type使用的是交叉类型 &

type Animal = {
  name: string;
};
type Dog = Animal & {
  breed: string;
};

合并声明不同

interface同名接口会自动合并成一个

interface User { name: string; }
interface User { age: number; }
// 最终 User = { name: string; age: number }

type同名类型则会报错

灵活性

type支持更复杂的类型表达式

// 联合类型
type ID = string | number;

// 元组
type Point = [number, number];

实现

interface和type都能被类实现

interface User { name: string; }
type User = { name: string };

class User1 implements User { name = 'Alice'; }
class User2 implements User { name = 'Bob'; }
interface Animal {
  name: string;
  eat(food: string): void;
}

class Dog implements Animal {
  name: string;  // 必须实现接口属性

  constructor(name: string) {
    this.name = name;
  }

  eat(food: string) {  // 必须实现接口方法
    console.log(`${this.name} eats ${food}`);
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值