【问题标题】:create a new class using a string name in typescript [duplicate]在打字稿中使用字符串名称创建一个新类[重复]
【发布时间】:2014-01-08 00:58:30
【问题描述】:

我正在编写一个 XML 加载器/解析器(并且是 typescript 的新手),我可以很好地加载 XML,但是我正在尝试将 XML 数据动态解析回类/对象。问题是,我想使用字符串变量创建一个类; IE var classNameString:String = "className";

var newClass:any = new class(classNameString)

从我对互联网的多次搜索来看,这似乎是不可能的,我将不得不对类名进行硬编码。任何帮助将不胜感激。

【问题讨论】:

标签: class parsing typescript


【解决方案1】:

如果你有一个特定的命名空间,对于你想要创建的所有类,你可以这样做:

var newClass: any = new (<any>MyNamespace)[classNameString](parametersIfAny);

如果它们在默认命名空间中,您可以简单地使用window:

var newClass: any = new (<any>window)[classNameString](parametersIfAny);

更新

您现在需要使用最新的 TypeScript 进行 &lt;any&gt; 转换,否则您将获得 Error TS7017 Build:Element implicitly has an 'any' type because type '{}' has no index signature.

【讨论】:

  • 效果很好...干净整洁!
  • 这在 nodejs 中也有效吗?
  • @JaumeMussonsAbad:试试看,让我知道。假设 nodejs 仍然使用标准实例创建它应该可以工作(命名空间是正确的)。
  • 我的第一个结果说它在 nodejs 中不起作用:“ReferenceError: window is not defined”。
  • @isgoed:这从未使用 nodejs 进行过测试,因此您可能存在其他命名空间。请提出一个显示您的代码的新问题。谢谢
猜你喜欢
  • 2019-06-02
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 2019-11-25
  • 2016-03-04
  • 2023-02-10
  • 2022-07-27
相关资源
最近更新 更多