MST

星途 面试题库

面试题:TypeScript方法装饰器的依赖注入

使用TypeScript方法装饰器实现一个简单的依赖注入功能。假设有一个类`Service`,有一个方法`getData`返回字符串数据。另外有一个类`Consumer`,其某个方法需要使用`Service`类的`getData`方法获取的数据。请用方法装饰器来注入`Service`实例,并在`Consumer`类的方法中使用注入的`Service`实例调用`getData`方法,最后返回拼接后的字符串。
43.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
class Service {
    getData(): string {
        return '原始数据';
    }
}

function injectService(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
    const originalMethod = descriptor.value;
    descriptor.value = function (...args: any[]) {
        const service = new Service();
        const data = service.getData();
        const result = originalMethod.apply(this, args);
        return `${data} - ${result}`;
    };
    return descriptor;
}

class Consumer {
    @injectService
    consume(): string {
        return '消费的数据';
    }
}

const consumer = new Consumer();
console.log(consumer.consume());