Vue 2.5發佈在即 將全面支持TypeScript

寫在前面

原文連接 Upcoming TypeScript Changes in Vue 2.5
如無特殊聲明,文中的TS均指TypeScript
因爲是本人第一次翻譯,且無TypeScript使用經驗,若是有錯誤之處,請閣下不吝賜教。vue

編碼優化類型優化(此處原文爲Typing Improvement 結合上下文 應該是「編碼優化」)

從Vue 2.0發佈以來,就一直有呼聲說要將TypeScript更好地和Vue整合到一塊兒,主要的庫(Vue, Vue-Router, Vuex)也有了TS的類型聲明。然而,目前的Vue和TS的結合,當你使用某些新的(out-of-the-box實在不知道怎麼翻)Vue API還有點欠缺。例如,使用TS時就沒法很好地推斷Vue中this指向;而爲了更好地使用TS的語法編寫Vue組件,必須使用額外的vue-class-component作裝飾器。git

對於喜歡OOP編程的人來說,這可能已經足夠使用了;但他們爲了使用TS的類型推斷,就必須使用不一樣的API。這對從現有的ES編寫的Vue程序遷移到TS時會有很多的問題。github

今年早些時候,TS就發佈了一些新的特性,這些特性解決了TS對於對象中this指向的問題,解決了Vue中的類型聲明問題。來自TS團隊的Daniel Rosenwasser提出了一個宏大的目標,如今由Vue團隊中的[HerringtonDarkholme](github.com/HerringtonD…vue-router

  • 在使用TS時,原生Vue API中正確的this類型推斷,在單文件組件中也適用;
  • 組件props中正確的this類型推斷
  • 更重要的是,這些優化對於使用原生JS的開發者也會有幫助。若是你正在使用VSCode作開發而且安裝了插件Vetur,代碼自動提示將會有巨大的提高;在使用原生JS編寫Vue組件時,類型提示也會有很多的優化。這都要歸功於vue-language-server,一個負責Vue組件語法分析的包,得益於TS編譯器,能更好地分析編寫的代碼。不單單VSCode能使用這個包,任何支持語言服務器接口(language server protocol)的IDE都能使用vue-language-server

(因圖片過大,掘金沒法上傳,沒法轉存,只好放連接了,編輯器語法提示圖片vuex

若是你火燒眉毛地想試試新特性,能夠checkoutveturpack上的new-types分支,使用VSCode + Vetur運行。vue-cli

TS開發者遷移須要作的事情

關於TS類型升級優化的特性將會出如今Vue 2.5,目前的計劃是在10月初左右發佈。由於大部分的API都沒有發生變化,因此只更新了一個小的版本號。可是,對於現有的使用TS + Vue開發的項目,遷移到2.5版本的Vue上時,有一些代碼須要改變,爲了給開發者有足夠的時間去計劃遷移,咱們提前宣佈了這些新特性。typescript

  • 新特性的TS版本最低要求爲2.4;使用Vue2.5時,建議使用最新版的TS;
  • 早些版本,咱們建議在tsconfig.json配置文件中添加「allowSyntheticDefaultImports」: true,並使用ES風格的import語法,在全部地方都使用import Vue from ‘vue’;但在新版本中,配置中的「allowSyntheticDefaultImports」: true將再也不須要,官方默認使用ES的import/export,在全部狀況下,開發者都必須使用ES的imports
  • 由於語法的變動,如下這些依賴Vue 2.5的庫都會有版本的更新: vuex, vue-router, vuex-router-sync, vue-class-component
  • 當你增長自定義模塊的時候,應該使用interface VueConstructor而不是nameSpace Vue例子
  • 若是你將組件選項註解爲ComponentOptions<Something>,computed,watch,render以及生命週期鉤子函數須要你手動加上類型註解

咱們盡力將遷移成本降到最低,TS整合的優化儘量作到與vue-class-component兼容。對於大部分開發者,簡單地更新一下依賴包並轉換成ES風格的import就能完成升級。與此同時,咱們建議講版本停留在2.4.x直至你真的作好準備升級了。npm

On the Roadmap: vue-cli支持TypeScript

在Vue 2.5發佈後,咱們計劃在下個版本的vue-cli中加入對TS的支持,方便開發者。編程

對於非TypeScript用戶

新版本的Vue對於使用ES的開發者沒有任何的負面影響,2.5版本是徹底的向後兼容。如上文提到的,若是你使用vue-language-server,你將會有更好的語法提示功能。json

相關文章
相關標籤/搜索