MST

星途 面试题库

面试题:TypeScript中Mixin的基本实现

请用TypeScript实现一个简单的Mixin模式,假设我们有一个基础类`Animal`,包含`name`属性和`sayName`方法,现在通过Mixin添加一个`run`方法到`Animal`类,描述实现思路并给出代码示例。
35.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 首先定义基础类 Animal,包含 name 属性和 sayName 方法。
  2. 然后创建一个 mixin 函数,该函数接收一个目标类作为参数,并返回一个新的类,这个新类会将 run 方法混入到目标类中。
  3. 最后使用这个 mixin 函数将 run 方法混入到 Animal 类。

代码示例

// 基础类 Animal
class Animal {
    name: string;
    constructor(name: string) {
        this.name = name;
    }
    sayName() {
        console.log(`My name is ${this.name}`);
    }
}

// Mixin 函数
function addRunMixin<T extends new (...args: any[]) => any>(Base: T) {
    return class extends Base {
        run() {
            console.log(`${this.name} is running`);
        }
    };
}

// 使用 Mixin 将 run 方法混入到 Animal 类
const AnimalWithRun = addRunMixin(Animal);
const myAnimal = new AnimalWithRun('Tom');
myAnimal.sayName();
myAnimal.run();