如何在VueJS中创建和扩展抽象类组件?

时间:2019-07-22 19:58:58

标签: typescript vue.js vue-component abstract-class

你好吗?

所以,我一直在为我工作的公司从事一个新项目。

我们将开发一个SDK,以提供给第三方开发人员类,以便他们可以构建在我们的应用程序中运行的组件。

我想写一个抽象类,所以我可以强迫开发人员实现一些方法。

我该怎么做?

我当时正在考虑创建一个纯类型脚本类以构建抽象类,然后在我的 COMPONENT CLASS 中继承它... < / p>

类似的东西:

abstract class AbstractClass {
  public abstract abstractMethod(): void
}

但是我该如何使用vue组件类来完成这项工作?

1 个答案:

答案 0 :(得分:1)

Authentication Backend可用于将Vue组件定义为TypeScript类,但它具有vue-class-component有关抽象类的信息。

取决于应该使用抽象方法的方式,可以添加其他检查以在子组件中强制实施抽象方法,例如:

interface IFooComponent {
  bar(): void;
}

@Component({})
class BaseFooComponent extends Vue {
  ['bar' as string]()  {
    throw new Error('not implemented');
  }
}

// `implements` causes compilation error
class FooComponent extends BaseFooComponent implements IFooComponent {
  // bar() {}

  mounted() {
    this.bar(); // causes both compilation and runtime error
  }
}