Já sice s TypeScriptem ještě začínám, ale mohlo by to být nějak takto:
interface DataService { }
class DataServiceFactory {
private instances: { [serviceName: string]: DataService; } = { };
public create<T extends DataService>(serviceName : string, dataServiceType): T {
if (typeof this.instances[serviceName] == 'undefined')
{
this.instances[serviceName] = new dataServiceType();
}
return this.instances[serviceName];
}
}
Konkrétní typ je ale potřeba předat i do metody create třídy DataServiceFactory:
class MyDataService { /*...*/ }
var factory = new DataServiceFactory();
var service = factory.create("MyDataService", MyDataService);
|