Vue 2.5中将迎来有关TypeScript的改进!

类型改进

自Vue2.0发布以来,咱们一直在收到更好集成TypeScript的请求。从那时起,咱们已经为大多数核心库(vuevue-routervuex)加入了官方的TypeScript类型声明。然而,当使用开箱即用的Vue API时,目前的集成仍是有所欠缺。例如:TypeScript不能轻易的推断出Vue使用的基于对象的默认API中的this类型。想要使咱们的Vue代码与TypeScript更好的运做,咱们须要使用vue-class-component装饰器,它容许咱们使用基于类的语法来写Vue组件。vue

对于喜欢基于类的API的用户,这可能就够好了,可是有点糟的是,只是为了类型判断,用户就不得不使用不一样的API。这也使得将现有的Vue代码库向TypeScript迁移更具挑战。git

今年的早些时候,TypeScript引入了一些新特性,能使TypeScript更好的理解基于对象字面量的API,这也使得改进Vue的类型声明更具可能。来自TypeScript团队的Daniel Rosenwasser发起了一个雄心勃勃的PR(如今由核心团队成员HerringtonDarkholme持有),一旦经过合并,将会提供:github

  • 使用默认的Vue API时对this的正确的类型推断。这也能在单文件组件中很好的运行!
  • 基于组件的props配置的thisprops的类型推断。
  • 更重要的是,这些改进也会使纯粹的JavaScript用户受益!,若是你正在配合很棒的Vetur扩展使用VSCode,在Vue组件中使用纯粹的JavaScript时,你会感觉到关于自动补全提示甚至是类型提示的显著改进! 这是由于vue-language-server,这个分析Vue组件的内部包,能够利用TypeScript编译器来提取关于你代码的更多信息。此外,任何支持语言服务协议的的编辑器均可以利用vue-language-server来提供相似的功能。


运行中的 VSCode + Vetur + 新类型声明vue-router

感兴趣的话,就克隆这个体验项目(确保是new-types分支)并使用VSCode + Vetur打开它来尝试一下吧。vuex

TypeScript用户可能须要的操做

类型改进将在vue 2.5中实装,目前计划在十月初先后发布。咱们正在发布一个小版本,由于JavaScript公共API尚未取得突破性改变,可是,升级可能须要现有的Vue+TypeScript用户进行一些操做。这也是咱们如今公布改动的缘由,便于你有足够的时间来规划升级。vue-cli

  • 新的类型须要至少2.4版的TypeScript。建议你随着Vue2.5升级至最新的TypeScript版本。
  • 以前,咱们建议在tsconfig.json中配置"allowSyntheticDefaultImports": true来使用ES风格的导入语法(import Vue from 'vue')。新的类型将正式转换至ES风格的导入/导出语法,这样上述配置就不须要了,并且用户在全部状况下都要使用ES风格的导入。
  • 为了配合语法的变化,下述有Vue核心类型依赖的库将会有主版本更新,须要跟随Vue2.5进行升级:vuex, vue-router, vuex-router-sync, vue-class-component
  • 如今,当增长自定义模块时,用户须要使用interface VueConstructor来代替namespace Vue(差别对比)
  • 若是你使用as ComponentOptions<something>来注释你的组件配置,像computed, watch, render和生命周期钩子这种类型的须要手动进行类型注释。

咱们尽力去减少升级成本,并使这些类型改进与vue-class-component中使用的基于类的API兼容。对于绝大多数用户,只须要升级依赖关系,并切换至ES风格的导入就好。同时咱们建议你在准备好升级前,将你的Vue版本锁定在2.4.xnpm

蓝图:vue-cli中的TypeScript类型支持

在2.5版本后,咱们计划在下个vue-cli版本中去引入官方TypeScript支持,以便TS+Vue用户能轻松的启动新项目。敬请期待吧!json

对于非TypeScript用户

这些改动不会对非TypeScript用户产生负面影响;就公共JavaScript API而言,2.5会彻底向下兼容,TypeScript CLI集成也能够彻底的选择性加入。可是正如刚才所提到的,若是你使用vue-language-server编辑器扩展,你会收到更好的自动补全提示。编辑器

this

感谢 Daniel Rosenwasser, HerringtonDarkholme, KatashinPine Wu 对这些特性作出的工做和对这篇文章的审核。

相关文章
相关标签/搜索