资讯专栏INFORMATION COLUMN

[译]Vue 2.5中即将推出的TypeScript变化

用户84 / 3393人阅读

摘要:中即将推出的变化输入提升自发布以来,我们一直在收到更好的集成请求。然而,当使用开箱即用的时,目前的集成有些缺乏。例如,不能轻易地推断使用的基于对象的默认中的类型。这也使得将现有代码库迁移到更具挑战性。

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 组件。

对于喜欢基于类的API的用户来说,这可能已经足够好了,但对于仅仅为了类型推断的用户不得不使用不同的API是不幸的。 这也使得将现有 Vue 代码库迁移到 TypeScript 更具挑战性。

今年早些时候,TypeScript 引入了许多新功能,这样就可以改进Vue的类型声明从而使得 TypeScript 可以更好地理解基于对象字面量的 API。 来自 TypeScript 团队的 Daniel Rosenwasser 开始了一个雄心勃勃的PR(现在由核心团队成员 HerringtonDarkholme 在这维护),一旦合并,将提供:

使用默认的 Vue API 时,对于 this 可以使用适当的类型推断。 它也可以在单文件组件中工作!

基于组件的 props 选项,对于 this 中的 props 输入推断。

最重要的是,这些改进也使得纯 JavaScript 用户受益匪浅! 如果你使用 VSCode 与超级棒的的 Vetur 扩展,你将获得大大改进的自动完成建议,甚至在Vue组件中使用纯 JavaScript 时也能获得输入提示! 这是因为vue-language-server是负责分析 Vue 组件的内部包,可以利用 TypeScript 编译器来提取有关你的代码的更多信息。 此外,任何支持语言服务器协议的编辑器都可以利用 vue-language-server来提供类似的功能。

对于那些好奇的人,你可以通过克隆这个 playground 项目(确保获取 new-types 的分支)并使用 VSCode + Vetur 打开它来尝试一下!

TypeScript用户可能需要的操作

输入升级将在 Vue 2.5 中发布,目前计划在10月初发布。 我们正在发布一个小版本,因为 JavaScript 公共 API 没有任何突破性的变化,但是升级可能需要现有的 TypeScript + Vue 用户采取一些操作。 这就是为什么我们现在宣布改变,以便你有足够的时间来计划升级。

新的输入至少需要 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 对组件选项进行注释,则此类型的 computedwatchrender 和生命周期钩子将需要手动类型注解。

我们尽力减少所需的升级工作,这些类型的改进与 vue-class-component 中使用的基于类的 API 兼容。 对于大多数用户来说,只需升级依赖并切换到ES风格的导入即可。 同时,我们还建议你将Vue 版本锁定到2.4.x,直到你准备升级为止。

未来规划:vue-cli中的TypeScript支持

2.5之后,我们计划在下一个版本的 vue-cli 中引入对TypeScript 的官方支持,以便使 TS + Vue 用户更轻松地启动新项目。 敬请关注!

对于非TypeScript用户

这些更改不会以任何负面的方式影响非 TypeScript Vue 用户; 根据公共JavaScript API,2.5 将完全向后兼容,并且TypeScript CLI集成将完全选择加入。 但是如上所述,如果你使用vue-language-server强大的编辑器扩展,则会注意到更好的自动完成建议。

感谢 Daniel Rosenwasser, HerringtonDarkholme, Katashin 以及 Pine Wu 对于这些特性的工作以及对这篇文章的审阅。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88950.html

相关文章

  • []Vue 2.5 发布了

    摘要:感谢来自团队的发起的,以及核心团队成员和的改进和审查。在中,我们已经发布了一个与环境无关的版本,可以在浏览器或纯引擎中使用。同样,我们建议你查看完整的发布说明从而了解其他的改进,包括,,,等。 原文:Vue 2.5 released 译者:neal1991 welcome to star my articles-translator , providing you advanced ...

    Drinkey 评论0 收藏0
  • 2017-08-18 前端日报

    2017-08-18 前端日报 精选 [译] 关于 React Router 4 的一切腾讯祭出大招VasSonic,让你的H5页面首屏秒开用简单的方法学习ECMAScript 6【译】一个小时搭建一个全栈Web应用框架你应该知道的Debug技巧Understanding V8’s Bytecode – DailyJS – MediumAnnouncing TypeScript 2.5 RC 中文...

    AZmake 评论0 收藏0
  • 前端发展历程

    摘要:前端的发展历程什么是前端前端针对浏览器的开发,代码在浏览器运行后端针对服务器的开发,代码在服务器运行前端三剑客超文本标记语言是构成世界的基石。 前端的发展历程 什么是前端 前端:针对浏览器的开发,代码在浏览器运行 后端:针对服务器的开发,代码在服务器运行 前端三剑客 HTML CSS JavaScript HTML HTML(超文本标记语言——HyperText Markup ...

    刘明 评论0 收藏0
  • 】关于转器 JavaScript 程序员需要知道

    摘要:他们的计划是,使用微软开发者们所习惯的其他语言的开发工具所支持的静态类型,得到更好的代码。在微软内部,被和以及团队所使用,而且它被系的等公司使用。标准的编辑,同时也是微软项目高级经理的也同意。 本文转载自:众成翻译译者:文蔺链接:http://www.zcfy.cc/article/895原文:http://thenewstack.io/javascript-transpilers-n...

    freecode 评论0 收藏0
  • 前端每周清单年度总结与盘点

    摘要:前端每周清单年度总结与盘点在过去的八个月中,我几乎只做了两件事,工作与整理前端每周清单。本文末尾我会附上清单线索来源与目前共期清单的地址,感谢每一位阅读鼓励过的朋友,希望你们能够继续支持未来的每周清单。 showImg(https://segmentfault.com/img/remote/1460000010890043); 前端每周清单年度总结与盘点 在过去的八个月中,我几乎只做了...

    jackwang 评论0 收藏0

发表评论

0条评论

用户84

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<