Я хочу передать в качестве параметра аргумента значение ниже:
const myClassesArray = [MyClass1, MyClass2, MyClass3];
Я не могу изменить классы в массиве, чтобы f.e. сделать так, чтобы все они расширяли или реализовывали любой другой класс или интерфейс.
Поэтому метод будет таким:
myMethod(myClasses){
// for each myClasses
new myClasses[i]();
// for end
}
Пример использования:
myMethod(myClassesArray);
Могу ли я сделать это в ТС?
Вы можете сделать это с помощью конструируемых сигнатур функций. Вот как это будет выглядеть в вашем коде:
class A {
constructor(input: string) {}
}
class B {
constructor(input: string) {}
}
class C {
constructor(input: string) {}
}
function comboParser(parsers: (new (input: string) => any)[]) {
for (const parser of parsers) {
const p = new parser("hey");
}
}
// ? these work
comboParser([A, B]);
comboParser([A]);
// ? these fail
comboParser([""]);
comboParser([A, ""]);
comboParser([B, C, 5]);