如何定义方法参数类型以便在 Typescript 中接受多个 class 名称?

How to define a method param type in order to accept multiple class names in Typescript?

我想将以下值作为参数传递:

const myClassesArray = [MyClass1, MyClass2, MyClass3];

我无法将数组中的 class 更改为 f.e。让它们都扩展或实现任何其他 class 或接口。

所以方法是这样的:

myMethod(myClasses){
    // for each myClasses
        new myClasses[i]();
    // for end
}

用法示例:

myMethod(myClassesArray);

我可以在 TS 中完成吗?

您可以通过可构造的函数签名来做到这一点。这是它在您的代码中的样子:

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]);

TypeScript Playground