MST

星途 面试题库

面试题:TypeScript中接口与抽象类在实现方面的区别

请阐述在TypeScript里,使用接口和扩展抽象类来约束和定义代码结构时,在实现规则、成员类型、使用场景等方面有哪些主要区别,并各举一个简单示例说明。
32.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

实现规则

  • 接口:类可以实现多个接口,接口只是定义成员的形状,不包含实现。 示例:
interface Printable {
    print(): void;
}
class Book implements Printable {
    print() {
        console.log('Printing book...');
    }
}
  • 扩展抽象类:一个类只能继承一个抽象类,抽象类可以包含部分实现。 示例:
abstract class Animal {
    abstract makeSound(): void;
    move() {
        console.log('Moving...');
    }
}
class Dog extends Animal {
    makeSound() {
        console.log('Woof!');
    }
}

成员类型

  • 接口:可定义属性、方法签名,但不能包含属性的初始值,也不能定义构造函数。
  • 扩展抽象类:可以包含属性(可初始化)、抽象方法、具体方法以及构造函数。

使用场景

  • 接口:常用于定义对象的形状,或对类的公共部分进行抽象,适用于需要多重实现的场景,如一个类需要同时具备多种行为。
  • 扩展抽象类:适用于有共同属性和行为,且部分实现可以复用的情况,用于建立类的继承体系,强调类之间的“is - a”关系。