我發現我很困惑的目標和lib選項以及它們如何與源代碼支持的功能進行交互。我覺得這些文檔需要改進一點,所以在提出問題之前在這裏提問。需要澄清的目標和lib編譯器選項
我天真地認爲目標指定了輸出代碼運行所需的JS版本(通過添加模塊加載器)。因此,我們可以始終使用TS在源代碼中支持的所有高級JS功能(如對象擴展),並且編譯器會爲我們指定的目標生成合適的代碼。我認爲它手邊有polyfills等,代碼將運行在目標虛擬機上。
但是,lib選項的文檔指定默認庫取決於目標。但是,庫會影響可用的源類型,從而影響我們可以使用的代碼。因此,我們可以使用的源特徵取決於目標。這不像我預料的那樣。我應該說我對lib的理解是,他們用不同的API來打樣,儘管文檔並沒有真正地說出它們的內容。
我可以看到,這裏有一些不依賴於類型和其他類型的語言功能。但目前還不清楚這是否是這種情況的原因之一。
有人可以澄清這一點嗎?
第二個問題是爲什麼當ES6和ES2015通常被記錄爲同一事物時,它們都存在。
感謝
感謝一個很好的答案。所以我發現混淆的根源在於''-target'''做了這兩件事,另外一些語言特性是向下編譯的,而另一些則不是,但確實需要在源代碼中使用lib。 –
這也是回答另一個問題 - 爲什麼地球上你會使用TS和Babel :)因此,一個很好的方式來定位目前許多當前的瀏覽器,目標是ES中的ES6,並將Babel轉換爲ES5。 –