我想將以下值作為引數的引數傳遞:
const myClassesArray = [MyClass1, MyClass2, MyClass3];
我無法更改陣列中的類以使所有它們擴展或實作任何其他類或介面。
因此方法是這樣的:
myMethod(myClasses){
// for each myClasses
new myClasses[i]();
// for end
}
使用示例:
myMethod(myClassesArray);
我可以在TS中做到嗎?
uj5u.com熱心網友回復:
您可以通過可構造的函式簽名來做到這一點。以下是它在您的代碼中的樣子:
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]);
打字稿游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/460210.html
