我一直在尋找到與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文件中,它編譯得很好。 –