返回
形色:interface 与 type
前端
2024-02-01 10:21:48
一、接口
1. 接口的使用
interface 中可以用分号或者逗号分割每一项,也可以什么都不加。
1.1 对象的形状
接口可以用来对象的形状,即指定对象必须具有的属性和方法。例如,我们可以定义一个名为 Person
的接口,其中包含 name
和 age
两个属性:
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;
这样,我们就创建了一个值为 10
的 myNumber
变量。
三、接口和类型别名的区别
接口和类型别名都有助于提高代码的可读性和可维护性,但它们之间也有本质区别。
- 接口可以用来描述对象的形状和行为的抽象,而类型别名只能用来为现有的类型创建一个新名称。
- 接口可以强制类型检查,而类型别名不能。
- 接口可以扩展其他接口,而类型别名不能。
总的来说,接口比类型别名更强大,但它们也更复杂。在实际开发中,我们应该根据具体情况选择使用接口还是类型别名。