我一直在寻找到与JavaScript中的字符串创建类,直到我碰到这个传来:从打字稿/ Angular2类字符串创建实例
var instance = new window[classString]();
然而,这似乎并没有在打字稿工作,因为有缺少类型信息。
详情:
interface SomeInterface{
structuredData: any;
}
class A implements SomeInterface {
}
我在数据库中存储JSON序列类信息。比方说,我有一个模型类A
,该类的属性在前端序列化为JSON字符串,并与表示此数据的类名称一起发送到数据库,即数据库包含一个包含该类名称的class_type
列。在这种情况下,这将是字符串'A'。现在,我想将这些数据重新存入我的应用程序,并从这些数据中动态构建一个实例。
如果我们看一下JavaScript的实例代码上面我发现,我很乐意做这样的事情:
let instance = new window['A']();
instance.structuredData = foo;
由于这些类包含坚持某个接口的通用参数,我将能够分配序列化数据到那些新实例化的实例。
我正在使用Angular2/Webpack,并且非常感谢任何有关如何执行此操作的提示。
当使用代码就像我上面提到的,我得到以下编译器错误:
Cannot use 'new' with an expression whose type lacks a call or construct signature.
如果我尝试使用
declare var window;
我收到以下错误规避严格的类型检查:
window['classString'] is not a constructor
你用TypeScript代码得到了什么错误? –
@MichaelLiu添加错误消息。 –
我无法重现错误。如果我把'let instance = new window ['A']();'放在一个独立的.ts文件中,它编译得很好。 –