原文连接 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