【问题标题】:is vuejs2.x composition api fully compatibile with typescript?vuejs2.x 组合 API 是否与 typescript 完全兼容?
【发布时间】:2020-01-23 07:11:23
【问题描述】:

最近我将我们的 vue.js2.x 项目迁移到 typescript,并基于 evan-you 在本期的评论:

https://github.com/vuejs/rfcs/pull/17#issuecomment-494242121

Class API 提案正在被放弃。所以我使用的是基于常规选项的 vue.js 版本,它给我带来了很多类型问题。

我想知道 vuejs2.x composition api 是否与 typescript 完全兼容?我应该用它来解决所有问题吗? 在这种情况下,最佳做法是什么?

【问题讨论】:

    标签: typescript vue.js vuejs2 vue-class-components vue-composition-api


    【解决方案1】:

    我不确定“与 TypeScript 完全兼容”是什么意思。但是你绝对可以将 TypeScript 与 Vue 组合 API 一起使用,TypeScript 有助于改进代码和开发者体验。

    这是一个使用composition plugin with Vue 2的示例:

    import { computed, createComponent, reactive } from "@vue/composition-api";
    
    export default createComponent({
      name: "Hello",
    
      template: `<p>{{ state.message }}</p>`,
    
      props: {
        name: {
          type: String,
          required: true
        }
      },
    
      setup(props, context) {
        const state = reactive({
          message: computed(() => `Hello, ${props.name}!`)
        });
        return {
          state
        };
      }
    });
    

    以上所有代码都输入良好。组合 API(此处为:createComponentreactivecomputed)提供了正确的类型。请注意,使用组合 API,我们不再需要使用 this

    【讨论】:

    • 我的意思是,当您使用带有类型脚本的 vue.sj,然后使用 mixins 和许多其他东西时,出现检测问题......就像这样“stackoverflow.com/questions/59828104/…”。 compostion api有这样的问题吗?
    • @SeyyedKhandon Composition API 旨在取代 mixins。如果您使用组合 API,则不需要 mixins,因为不再需要混合任何东西。我引用documentation“类似的逻辑重用也可以使用现有的模式来实现,例如混合、高阶组件或无渲染组件(通过作用域插槽)。[…] 高级想法是这些中的每一个与合成函数相比,模式有各自的缺点 […]"
    • 如果您的问题是:“TypeScript 是否是使用 Vue.js 的 Composition API 的应用程序的整个代码的相关选择?”......在我们公司,我们上个月完成了代码库的迁移(100 % TypeScript) 从旧的 Vue 类 API 到组合 API。新代码更好,包括打字。
    【解决方案2】:

    是的,Vue.js 与 TypeScript 兼容,因为 Vue CLI 提供了内置的 TypeScript 工具支持。它只需要通过npmyarn 安装,如here 所述,因此它不需要任何额外的工具即可将TS 与Vue 结合使用。 给定的链接中还包含有关recommended configurationbasic usage 的一些解释。

    【讨论】:

    • vuejs 默认情况下在 typescript 中存在类型问题,正如核心 vuejs 团队所指出的那样,如果您有任何经验,您将面临诸如 mixins 之类的问题。所以正因为如此,我问了一个关于compostion api的问题,我认为你的回答与问题无关......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2011-07-01
    • 2019-06-28
    • 1970-01-01
    • 2011-11-10
    相关资源
    最近更新 更多