MST
星途 面试题库

面试题:TypeScript类装饰器实现依赖注入

假设你有一个类 `UserService` 提供用户相关的业务逻辑,在另一个类 `AppComponent` 中需要使用 `UserService` 的功能。请使用TypeScript的类装饰器实现依赖注入,使得 `AppComponent` 能够获取到 `UserService` 的实例并调用其方法。
13.2万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 定义UserService类
class UserService {
    getUserInfo() {
        return "User Information";
    }
}

// 定义依赖注入装饰器
function Inject(serviceClass: new () => any) {
    return function (target: any, propertyKey: string) {
        const serviceInstance = new serviceClass();
        target[propertyKey] = serviceInstance;
    };
}

// 定义AppComponent类
class AppComponent {
    @Inject(UserService)
    userService: UserService;

    ngOnInit() {
        const userInfo = this.userService.getUserInfo();
        console.log(userInfo);
    }
}

// 测试
const appComponent = new AppComponent();
appComponent.ngOnInit();