我希望能够实例化一个typescript类,在运行时从中获取类和构造函数的详细信息.

export function createInstance(moduleName : string, className : string, instanceParameters : string[]) {
    //return new [moduleName].[className]([instancePameters]); (THIS IS THE BIT I DON'T KNOW HOW TO DO)
}

推荐答案

你可以试试:

var newInstance = Object.create(window[className].prototype);
newInstance.constructor.apply(newInstance, instanceparameters);
return newInstance;

Edit此版本使用的是TypeScript Playerd,示例如下:

class Greeter {
    greeting: string;
    constructor(message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}

//instance creation here
var greeter = Object.create(window["Greeter"].prototype);
greeter.constructor.apply(greeter, new Array("World"));

var button = document.createElement('button');
button.innerText = "Say Hello";
button.onclick = function() {
    alert(greeter.greet());
}

document.body.appendChild(button);

Typescript相关问答推荐

在使用Typescribe时,是否有一种方法可以推断映射类型的键?

访问继承接口的属性时在html中出错.角形

react 路由Use RouteLoaderData类型脚本错误

尽管对象的类型已声明,但未解析的变量<;变量

使用TypeScrip5强制使用方法参数类型的实验方法修饰符

ANGLE订阅要么不更新价值,要么不识别价值变化

基于泛型的条件接口键

如何从对象或类动态生成类型

TypeScript:如何使用泛型和子类型创建泛型默认函数?

如何在TypeScript中描述和实现包含特定属性的函数?

基于可选参数的动态类型泛型类型

递归地排除/省略两种类型之间的公共属性

有没有办法从不同长度的元组的联合中提取带有类型的最后一个元素?

使用 TypeScript 在 SolidJS 中绘制 D3 力图

为什么我们在条件语句中使用方括号[]?

如何解决联合类型上的此表达式不可调用?

如何在react-router-dom v6中捕获pop事件

在 TypeScript 中使用递归类型和映射类型触发过多属性警告

Typescript:将 2 个接口合并为 1 个

RTK:useSelector() 与 store.getState()