Инициализация свойств из универсальных типов в TypeScript

#typescript #generics

Вопрос:

У меня есть простой код, как указано ниже. Я хочу автоматически создавать экземпляры предоставляемых универсальных типов и просто создавать несколько служб, работающих с разными типами внутри.

Все конструкторы имеют параметры.

Это легко в C#, но как это сделать в TypeScript?

 export class MyClassA {
    constructor(data) {
    }
}

export class MyClassB {
    constructor(data) {
    }
}

export class BaseService<TTypeA, TTypeB> {

    typeA: TTypeA;
    
    typeB: TTypeB;

    constructor(data) {

        // How to create instances of typeA and typeB?
        typeA = new TTypeA(data);
        typeB = new TTypeB(data);
    }
}


export class DataService extends BaseService<MyClassA, MyClassB> {

    constructor(data) {

        super(data)
        
    }
    
    doSomething() {
    
        // Accessing data
        
        // this.typeA ...
        // this.typeB ...
    
    }
}

const data: any = {};
const service = new DataService(data);

 

Я обнаружил, что мне нужно поместить некоторые параметры создателя типов в конструктор, чтобы получить тип во время компиляции, но как?