我实现自定义服务提供程序,接收类以获取现有实例,因此我想以下列方式使用它:
class MyService{
doSomething(){
console.log("something");
}
}
var myServiceInstance = serviceProvider.get<MyService>();
myServiceInstance.doSomething();
我必须写的问题
serviceProvider.get<MyService>(MyService);
哪个很难看。有没有办法实现服务提供者接口,类引用将由指定的泛型参数在内部检索?
答案 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();
如果有更好的方法,请告诉我。