vuejs2.x composition api 与打字稿完全兼容吗?

is vuejs2.x composition api fully compatibile with typescript?

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

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

Class API 提案正在被删除。所以我使用的是 vue.js 的基于常规选项的版本,它让我遇到了很多类型问题。

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

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

我不确定 "fully compatible with 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