原文連接 Upcoming TypeScript Changes in Vue 2.5
如無特殊聲明,文中的TS均指TypeScript
因爲是本人第一次翻譯,且無TypeScript使用經驗,若是有錯誤之處,請閣下不吝賜教。vue
從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
this
類型推斷,在單文件組件中也適用;props
中正確的this
類型推斷language server protocol
)的IDE都能使用vue-language-server。(因圖片過大,掘金沒法上傳,沒法轉存,只好放連接了,編輯器語法提示圖片)vuex
若是你火燒眉毛地想試試新特性,能夠checkoutveturpack上的new-types
分支,使用VSCode + Vetur運行。vue-cli
關於TS類型升級優化的特性將會出如今Vue 2.5,目前的計劃是在10月初左右發佈。由於大部分的API都沒有發生變化,因此只更新了一個小的版本號。可是,對於現有的使用TS + Vue開發的項目,遷移到2.5版本的Vue上時,有一些代碼須要改變,爲了給開發者有足夠的時間去計劃遷移,咱們提前宣佈了這些新特性。typescript
tsconfig.json
配置文件中添加「allowSyntheticDefaultImports」: true
,並使用ES風格的import
語法,在全部地方都使用import Vue from ‘vue’
;但在新版本中,配置中的「allowSyntheticDefaultImports」: true
將再也不須要,官方默認使用ES的import/export
,在全部狀況下,開發者都必須使用ES的importsvuex
, 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
在Vue 2.5發佈後,咱們計劃在下個版本的vue-cli中加入對TS的支持,方便開發者。編程
新版本的Vue對於使用ES的開發者沒有任何的負面影響,2.5版本是徹底的向後兼容。如上文提到的,若是你使用vue-language-server,你將會有更好的語法提示功能。json