我正在使用与此类似的模式:
class MyClass { }
doSomethingWithClass(MyClass) { }
如果我要使用 Flow 或 TS 在我的代码中添加输入,我将如何输入?这样的事情不会暗示我期待 MyClass 的实例吗?
doSomethingWithClass(MyClass: MyClass) { }
我想做的是将构造函数/类传递给工厂模式,但我不知道如何实际键入它。
最佳答案
为了将类构造函数传递给函数,您可以使用构造函数签名:
function doSomethingWithClassGeneric<T>(myClass: new () => T) {
return new myClass()
}
doSomethingWithClassGeneric(MyClass);
上面我们使用了一个不带参数的构造函数,但您可能需要存在构造函数的参数。
或者您也可以使用 typeof MyClass
接受从 MyClass
派生的具有兼容构造函数的类:
class MyClass { }
class MyClassDerived extends MyClass { x!: number }
function doSomethingWithClassGeneric<T>(myClass: typeof MyClass) {
return new myClass()
}
doSomethingWithClassGeneric(MyClass);
doSomethingWithClassGeneric(MyClassDerived);
关于javascript - 如何键入类或构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49798908/