javascript - 如何从类引用中实例化一个 javascript 对象?

标签 javascript typescript function class constructor

我希望能够根据对类的引用在 javascript( typescript )中实例化对象。例如,我希望能够像这样使用某种工厂函数,但我不知道如何实现这个结果。

class A {
    constructor() { this.b = 'somevalue'; }
}

const factory = (klass: Function) => {
    return new klass();
}

const instanceOfA = factory(A);

这个例子有点做作,但有没有办法做到这一点?当前错误提示 klass 不是构造函数。或者,如果有一种更惯用的方式从类引用中实例化事物,我很想听听。谢谢!

最佳答案

Function 只是错误的类型,使用构造函数类型(这也有助于推断正确的返回类型):

function factory<T>(klass: { new(): T }): T {
   return new klass();
}

或者作为一个 const 你分配给:

const factory = <T>(klass: { new(): T }) => {
    return new klass();
};

关于javascript - 如何从类引用中实例化一个 javascript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57739710/

相关文章:

c - C代码的区别?

javascript - 单击按钮时如何使 Canvas 文本消失

javascript - JS 和 DOM 字符串以 UTF16 存储是否有任何副作用?

javascript - 单击单选按钮添加/删除表单元素类

angular - 在 TypeScript.2.7 中找不到名称 'TextDecoder'

javascript - 表单提交上的 Angular 2 错误 TypeError : _co. onSubmit 不是函数

javascript - 无法从 Angular 中的响应数据分配数据

javascript - 在循环中获取属性的 sum() 而不循环遍历该对象的所有实例

python - 在 Python 3 中正确使用全局变量

c - 如何从指针获取信息