javascript - 如何键入类或构造函数

标签 javascript class typescript types flowtype

我正在使用与此类似的模式:

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/

相关文章:

typescript - 使用回退时合并对象区分联合类型

node.js - 组合 Visual Studio Code 构建任务

javascript - Angular:将 JSON 数据传递给子组件

php - 文件上传大小验证

javascript - 使用 Javascript 更改图像大小(复制)

r - R 中的 NA 清理后 data.frame 中的类没有改变

c++ - 没有从 'Class *' 到 'Class' C++ 的可行转换

javascript - Rails 复选框隐藏字段类

javascript - 使用 Javascript 从字符串中提取 CSS 属性

java - java中的简单抽象类