从Typescript中的Generic Argument获取类引用?

时间:2018-01-08 16:00:24

标签: typescript generics

我实现自定义服务提供程序,接收类以获取现有实例,因此我想以下列方式使用它:

class MyService{
   doSomething(){
      console.log("something");
   }
}

var myServiceInstance = serviceProvider.get<MyService>();
myServiceInstance.doSomething();

我必须写的问题

serviceProvider.get<MyService>(MyService);

哪个很难看。有没有办法实现服务提供者接口,类引用将由指定的泛型参数在内部检索?

1 个答案:

答案 0 :(得分:0)

在挖掘更多之后,我找到了可接受的解决方案,它有点不同但却消除了丑陋:

class ServiceProvider{
   get<TService>(serviceClass:(new(...args)=>TService)):TService{
      return this._serviceMap.get(serviceClass) as TService
   }
   private _serviceMap = new Map<any,any>
}

所以我只写一次类引用并收到类型结果:

let myService = serviceProvider.get(MyService);
myService.doSomething();

如果有更好的方法,请告诉我。