如何定义方法参数类型以便在 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]);
我想将以下值作为参数传递:
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]);