[譯]Vue 2.5中即將推出的TypeScript變化

Vue 2.5中即將推出的TypeScript變化

輸入提高

自Vue 2.0發佈以來,咱們一直在收到更好的 TypeScript 集成請求。 自從發佈以來,咱們已經爲大多數核心庫(vue, vue-router, vuex)包含了官方的 TypeScript 類型聲明。 然而,當使用開箱即用的 Vue API 時,目前的集成有些缺少。 例如,TypeScript 不能輕易地推斷 Vue 使用的基於對象的默認 API 中 this 的類型。 爲了使咱們的 Vue 代碼能夠很好地使用 TypeScript,咱們必須使用 vue-class-component 裝飾器,這樣咱們可使用基於類的語法來建立 Vue 組件。vue

對於喜歡基於類的API的用戶來講,這可能已經足夠好了,但對於僅僅爲了類型推斷的用戶不得不使用不一樣的API是不幸的。 這也使得將現有 Vue 代碼庫遷移到 TypeScript 更具挑戰性。git

今年早些時候,TypeScript 引入了許多新功能,這樣就能夠改進Vue的類型聲明從而使得 TypeScript 能夠更好地理解基於對象字面量的 API。 來自 TypeScript 團隊的 Daniel Rosenwasser 開始了一個雄心勃勃的PR(如今由核心團隊成員 HerringtonDarkholme 在維護),一旦合併,將提供:github

  • 使用默認的 Vue API 時,對於 this 可使用適當的類型推斷。 它也能夠在單文件組件中工做!
  • 基於組件的 props 選項,對於 this 中的 props 輸入推斷。
  • 最重要的是,這些改進也使得純 JavaScript 用戶受益不淺! 若是你使用 VSCode 與超級棒的的 Vetur 擴展,你將得到大大改進的自動完成建議,甚至在Vue組件中使用純 JavaScript 時也能得到輸入提示! 這是由於vue-language-server是負責分析 Vue 組件的內部包,能夠利用 TypeScript 編譯器來提取有關你的代碼的更多信息。 此外,任何支持語言服務器協議的編輯器均可以利用 vue-language-server來提供相似的功能。

1-ftkupzygizn1es87jcbs8q

對於那些好奇的人,你能夠經過克隆這個 playground 項目(確保獲取 new-types 的分支)並使用 VSCode + Vetur 打開它來嘗試一下!vue-router

TypeScript用戶可能須要的操做

輸入升級將在 Vue 2.5 中發佈,目前計劃在10月初發布。 咱們正在發佈一個小版本,由於 JavaScript 公共 API 沒有任何突破性的變化,可是升級可能須要現有的 TypeScript + Vue 用戶採起一些操做。 這就是爲何咱們如今宣佈改變,以便你有足夠的時間來計劃升級。vuex

  • 新的輸入至少須要 TypeScript 2.4 版本,建議升級到最新版本的 TypeScript 以及 Vue 2.5。
  • 以前,咱們已經推薦將 tsconfig.json 設爲 「allowSyntheticDefaultImports」: true 從而在任何地方使用 ES 風格的導入(import Vue from 'vue')。 新的輸入將正式轉換爲ES風格的導入/導出語法,所以再也不須要配置,而且用戶在全部狀況下都須要使用ES風格的導入。
  • 爲了配合導出語法的改變,如下依賴於 Vue 核心輸入的核心庫 vuex, vue-router, vuex-router-sync, vue-class-component 將會收到新的主要版本,而且應與 Vue 核心 2.5 一塊兒升級。
  • 當執行自定義模塊擴充時,用戶應該使用 interface VueConstructor 而不是 namespace Vue。(example diff)
  • 若是使用 ComponentOptions <Something> 對組件選項進行註釋,則此類型的 computedwatchrender 和生命週期鉤子將須要手動類型註解。

咱們盡力減小所需的升級工做,這些類型的改進與 vue-class-component 中使用的基於類的 API 兼容。 對於大多數用戶來講,只需升級依賴並切換到ES風格的導入便可。 同時,咱們還建議你將Vue 版本鎖定到2.4.x,直到你準備升級爲止。vue-cli

將來規劃:vue-cli中的TypeScript支持

2.5以後,咱們計劃在下一個版本的 vue-cli 中引入對TypeScript 的官方支持,以便使 TS + Vue 用戶更輕鬆地啓動新項目。 敬請關注!npm

對於非TypeScript用戶

這些更改不會以任何負面的方式影響非 TypeScript Vue 用戶; 根據公共JavaScript API,2.5 將徹底向後兼容,而且TypeScript CLI集成將徹底選擇加入。 可是如上所述,若是你使用vue-language-server強大的編輯器擴展,則會注意到更好的自動完成建議。json

服務器

感謝 Daniel Rosenwasser, HerringtonDarkholme, Katashin 以及 Pine Wu 對於這些特性的工做以及對這篇文章的審閱。編輯器

相關文章
相關標籤/搜索