2017-06-21 103 views
1

我意識到這基本上是Typescript的相反意圖,但我希望能夠以編程方式從打字稿界面生成對象。基本上,我想這樣的事情:從Typescript接口生成對象

interface Foo { 
    bar: string 
} 

const generateObjFromInterface = (Foo) => // { bar: 'string'} 

我 - 不介意如果可能的話,實現是多麼的棘手!如果這絕對不可能,那也是有用的信息!

在此先感謝!

+1

唯一的辦法是處理的源代碼,因爲在不存在接口運行。類似於[此庫](https://github.com/kimamula/ts-transformer-keys)所做的事情。 – Saravana

回答

1

這是可能的。當typescript 2.4在角落時,我們可以在編譯期間爲typescript使用自定義轉換器,並獲取所有屬性的列表,並作爲結果創建具有這些屬性的對象。

這裏是一個example,但請注意 - 正如我說,這需要在穩定版本使用打字稿2.4及以上的尚未

+0

這看起來就像我的夢想解決方案,非常感謝! –

+0

你有沒有成功使用過這個軟件包?我一直在努力確定這是用戶錯誤還是包本身的問題,但我不斷收到以下錯誤:ts_transformer_keys_1.keys不是函數 –

+0

不,我沒有在實踐中使用它。你是否遵循瞭如何編譯該程序的指南:https://github.com/kimamula/ts-transformer-keys#how-to-use-the-custom-transformer?這是重要的一步。 – Amid

2

由於TypeScript的接口不存在於JavaScript輸出中,因此不可能通過接口進行運行時反射。

鑑於這種打字稿:

interface Foo { 
    bar: string 
} 

這是最終的JavaScript:

enter image description here

由於沒有JavaScript的,你想要做什麼是斷然不可能是很做作。

編輯:想想吧,你可能在運行時查找,讀取和解析* .ts源文件。