我看了以下所有内容:
第三个是最接近我正在寻找的,但(不幸的是)答案更多的是针对特定问题而不是问题 Headers .
这是(简化意义上)我希望能够做到的事情:
abstract class HasStringAsOnlyConstructorArg {
abstract constructor(str: string);
}
class NamedCat extends HasStringAsOnlyConstructorArg {
constructor(name: string) { console.log(`meow I'm ${name}`); }
}
class Shouter extends HasStringAsOnlyConstructorArg {
constructor(phrase: string) { console.log(`${phrase}!!!!!!`); }
}
const creatableClasses: Array<typeof HasStringAsOnlyConstructorArg> = [NamedCat, Shouter];
creatableClasses.forEach(
(class: typeof HasStringAsOnlyConstructorArg) => new class("Sprinkles")
);
在上面的示例中,您可以看到Shouter和NamedCat都使用一个单独的字符串作为其构造函数 . 它们不一定需要扩展类,它们可以实现接口或其他东西,但我真的希望能够保存一个类列表,这些类需要构造完全相同的参数 .
是否可以在TypeScript中使用 extends
或 implements
强制执行类构造函数参数类型?
编辑:"Possible Duplicate"似乎显示如何在接口中使用 new()
为此目的 . 也许还有其他方法 .
1 回答
您可以对数组本身执行此类强制执行,因此它将仅允许具有单个字符串参数的构造函数:
Playground