MST

星途 面试题库

面试题:TypeScript类装饰器在依赖注入场景的应用

在一个复杂的Web应用程序中,有一个`UserService`类用于处理用户相关业务逻辑,现在希望通过类装饰器实现依赖注入,使得`UserService`类能够依赖并使用`HttpClient`类(假设`HttpClient`类已经存在且有`get`、`post`等方法)来进行数据请求。请给出具体的TypeScript代码实现。
13.2万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
class HttpClient {
    get(url: string) {
        // 实际的网络请求逻辑
        console.log(`GET request to ${url}`);
    }
    post(url: string, data: any) {
        // 实际的网络请求逻辑
        console.log(`POST request to ${url} with data:`, data);
    }
}

function injectHttpClient(target: any) {
    return class extends target {
        httpClient: HttpClient;
        constructor(...args: any[]) {
            super(...args);
            this.httpClient = new HttpClient();
        }
    };
}

@injectHttpClient
class UserService {
    getUserData() {
        this.httpClient.get('/user/data');
    }

    updateUser(data: any) {
        this.httpClient.post('/user/update', data);
    }
}

// 使用示例
const userService = new UserService();
userService.getUserData();
userService.updateUser({ name: 'John' });