2017-05-04 90 views
1

is a similar question。這涵蓋了打字稿對該選項的作用。下面的問題和答案涵蓋了lib文件在運行時的來源。什麼是打字稿`--lib`庫文件?

當我擡起頭的--lib編譯器選項它說的描述:被列入彙編

的庫文件列表。

什麼是這些庫文件,它們是如何包含的?我正在學習的存儲庫具有以下設置?

"compilerOptions": { 
    "target": "es5", 
    "module": "es2015", 
    "lib": ["es2015", "dom"] 
}, 

將如何輸出有所不同,如果--lib中,沒有設置["es2015", "dom"]

+0

可能的重複[什麼tsconfig選項「lib」做?](http://stackoverflow.com/questions/39303385/what-does-the-tsconfig-option-lib-do) – Louis

+0

該問題有一個範圍更廣。 @Meirion Hughes能夠以簡短的答案提供簡單的見解,而無需鏈接到一篇很長的文章,所以我將保持原樣。 – Ole

回答

3

他們告訴打字稿編譯器,這些類型庫在運行時可用,並且不會抱怨您的目標es版本缺少功能。

你的配置是針對es5,但你告訴打字稿「es2015」功能將可用 - 例如Promise和Map。同樣,你有「dom」,所以打字稿知道你有window和browser-dom功能。

據我所知,它不會改變輸出......當您試圖使用目標es版本中不存在的功能時,typescript將僅僅是錯誤。

當你想要定位舊的瀏覽器時,你會這樣做,但也想使用,例如Promises。因此,我們告訴編譯器可以使用lib:["es2015.promise"],然後在執行時運行類似core-jsbluebird的多邊形填充Promise功能。

+0

好極了!我目前正在關注Angular4,它看起來像默認包含core-js,所以我認爲es2015的功能將在所有實現中被覆蓋(而dom自然被瀏覽器覆蓋)。雖然基於這篇文章,我正在閱讀http://blog.mgechev.com/2017/01/21/distributing-an-angular-library-aot-ngc-types/我們不應該直接觸摸dom ...那麼包含dom是個好主意嗎?這可能是一個不同的問題。 – Ole

+0

從技術上講,操縱dom是Angular應該做的事情...所以是的,你可能想嘗試沒有「dom」類型,這樣你就不會自己去嘗試做什麼。 –

+0

這就是我的想法 - 但作者說,這不是一個好主意,包括它...所以我想我會在這裏跟進,看看是否有任何案件:http://stackoverflow.com/questions/ 43786728 /應最打字稿-LIB-設置-DOM待包括-當顯影-AN-角度-4-C – Ole