返回

形色:interface 与 type

前端

一、接口

1. 接口的使用

interface 中可以用分号或者逗号分割每一项,也可以什么都不加。

1.1 对象的形状

接口可以用来对象的形状,即指定对象必须具有的属性和方法。例如,我们可以定义一个名为 Person 的接口,其中包含 nameage 两个属性:

interface Person {
  name: string;
  age: number;
}

这个接口了一个 Person 对象必须具有的属性和类型。我们可以使用这个接口来定义一个 Person 对象,例如:

const person: Person = {
  name: 'John Doe',
  age: 30
};

这样,我们就创建了一个符合 Person 接口的 person 对象。

1.2 行为的抽象

接口还可以用来描述行为的抽象,即定义一组方法的签名,而不指定这些方法的实现。例如,我们可以定义一个名为 Animal 的接口,其中包含一个 speak() 方法:

interface Animal {
  speak(): void;
}

这个接口描述了一个 Animal 必须具有的 speak() 方法,但它并没有指定这个方法的实现。我们可以使用这个接口来定义一个 Dog 类,例如:

class Dog implements Animal {
  speak() {
    console.log('Woof!');
  }
}

这个类实现了 Animal 接口中的 speak() 方法,并提供了这个方法的实现。

二、类型别名

类型别名是用来为现有的类型创建一个新名称。例如,我们可以使用 type 来创建一个名为 MyNumber 的类型别名,该类型别名表示一个数字:

type MyNumber = number;

现在,我们可以使用 MyNumber 类型别名来定义一个变量,例如:

const myNumber: MyNumber = 10;

这样,我们就创建了一个值为 10myNumber 变量。

三、接口和类型别名的区别

接口和类型别名都有助于提高代码的可读性和可维护性,但它们之间也有本质区别。

  • 接口可以用来描述对象的形状和行为的抽象,而类型别名只能用来为现有的类型创建一个新名称。
  • 接口可以强制类型检查,而类型别名不能。
  • 接口可以扩展其他接口,而类型别名不能。

总的来说,接口比类型别名更强大,但它们也更复杂。在实际开发中,我们应该根据具体情况选择使用接口还是类型别名。