在任何人标记此问题为重复之前,请阅读以下内容:
我的情况不仅涉及TypeScript,还涉及Angular2。
目标
我需要一个在app.component.ts中的方法,该方法接受一个字符串(类名)并创建该类的实例。这些类存在于其他ts文件中。
现在来看使用情况: 我有一个方法getWidgetObjectFromClassName(className : string) : Object{}
,它需要返回以字符串格式表示的类名称的实例。现在问题来了,
我尝试使用NameSpace, 并执行let instance = new SampleNS['OtherName']();
(SampleNS是一个namespace),在单个文件的情况下可以正常工作。
但是现在我有多个ts文件,比如interfaces.ts,classes.ts,otherclasses.ts。我在interface.ts中使用export namespace SampleNS{}
,然后在classes.ts中使用///<reference path="interfaces.ts" />
和相同的命名空间 SampleNS
。
现在我的方法getWidgetObjectFromClassName(className : string) : Object{}
在xyz.ts中,现在应该给出哪个import呢?我的意思是,如果我说'import {SampleNS} from './interfaces'。
问题在于我只能导入一个文件的命名空间(即使它是相同的),因此我创建的实例仅限于特定文件命名空间的导入。
Plunker链接 https://plnkr.co/edit/pt90F34KPsGoHDpSUQFD?p=preview