📜  TypeScript 中接口和类的区别(1)

📅  最后修改于: 2023-12-03 15:05:39.476000             🧑  作者: Mango

TypeScript 中接口和类的区别

在 TypeScript 中,接口和类都是非常重要的概念。它们都用于建立对象的类型约束,但是它们之间有一些不同点。下面我们将分别介绍接口和类的特性和区别。

接口

接口是定义一个对象类型的约束,它只描述了该对象应该包含哪些属性和方法,但并不提供属性和方法的具体实现。在 TypeScript 中定义一个接口的方式为:

interface Person {
  name: string;
  age: number;
  sayHello(): void;
}

这个接口定义了一个包含 nameage 两个字符串属性和一个 sayHello 方法的对象类型。使用该接口约束的对象必须满足这些条件,代码如下:

const person: Person = {
  name: "Tom",
  age: 18,
  sayHello() {
    console.log("Hello!");
  }
};

可以看到,使用该接口约束的对象必须拥有 nameage 属性和 sayHello 方法,否则会编译错误。

另外,接口还有一些高级用法,比如可选属性、只读属性、函数类型等,这些可以根据实际需求来使用。

类是面向对象编程的基础概念,它描述了对象的属性和方法,并提供了属性和方法的具体实现。在 TypeScript 中定义一个类的方式为:

class Animal {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
  sayHello() {
    console.log(`My name is ${this.name}`);
  }
}

这个类定义了一个 Animal 类型,它拥有 name 属性和 sayHello 方法。使用该类创建对象的方式为:

const cat = new Animal("Tom");
cat.sayHello(); // 输出 "My name is Tom"

可以看到,使用 new 关键字可以创建该类的实例,并且可以调用该实例的方法。

另外,类还有一些高级用法,比如继承、抽象类、访问修饰符等,这些也可以根据实际需求来使用。

接口与类的区别

接口和类都可以用于描述对象类型,但它们的作用不同,主要体现在以下几个方面:

  • 实现方式不同:接口只提供类型定义,没有具体实现,而类既提供类型定义,又提供具体实现。
  • 使用方式不同:接口通常用于约束对象的类型,而类则用于创建对象的实例。
  • 语法不同:定义接口使用 interface 关键字,定义类使用 class 关键字,在使用上也有一些不同。

总的来说,接口和类各有各的优势和适用场景,需要根据实际需求来选择其中的一种或同时使用。