描述模板参数实例的类型

时间:2019-01-22 15:00:52

标签: typescript interface inversion-of-control

我正在尝试通过类型检查实现一个简单的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) 

1 个答案:

答案 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);
    }
}