我正在尝试通过类型检查实现一个简单的ioc容器。
我想将抽象类类型和某些派生类型的实例传递给“ register”方法。
在“解决”中,我想传递一个抽象类类型并返回类型化的实例,而我在“注册方法”中传递了它。
我应该如何在“注册”功能中描述“实例”参数的类型?我能够对“ resolve”方法进行正确的类型检查,但是使用“ {prototype:T}”的这项技术不适用于“ register”方法。
const _items = new Map();
export class IoC {
public static register<K>(service: K, instance: any) {
_items.set(service, instance);
}
public static resolve<T>(service: {prototype: T}): T {
return _items.get(service);
}
}
// usage
IoC.register(AppServer, new TestAppServer());
IoC.resolve(AppServer)
答案 0 :(得分:0)
我已经结束了。
const _items = new Map();
export class IoC {
public static register<T>(service: {prototype: T}, instance: T) {
_items.set(service, instance);
}
public static resolve<T>(service: {prototype: T}): T {
return _items.get(service);
}
}