Vue `install` 函数有类型吗? 属性 `directive` 应该存在于 `Vue` 类型上吗?

Are there types for Vue `install` function? Should property `directive` exist on type `Vue`?

我正在为我的 vue 指令打字,但我似乎无法找到我应该为 Vue 安装功能使用什么类型。

选择 install(Vue: any): void 似乎有点奇怪。

我试过导入 Vue,然后使用 install(Vue: Vue),但这会抛出一个错误,即 Vue 上没有 .directive,这也很奇怪。

我应该如何输入安装函数? Vue 类型应该在这里工作吗?我在这里遗漏了什么,或者 Vue 遗漏了什么?

import { DirectiveOptions } from "vue"


const directive: DirectiveOptions = {
  bind(elem, bind, vn) {
    console.log('bound')
  }
};

export default {
  install(Vue: any): void { // what types should be used here?
    Vue.directive("do-stuff", directive);
  }
};

您想要的类型是VueConstructor。以下是 Typescript Vue 插件的创作方式

import { VueConstructor, PluginObject, DirectiveOptions } from "vue"

const directive: DirectiveOptions = {
  bind(elem, bind, vn) {
    console.log('bound')
  }
}

const plugin: PluginObject<any> = {
  install (Vue: VueConstructor): void {
    Vue.directive("do-stuff", directive)
  }
}

export default plugin

https://github.com/vuejs/vue/blob/dev/types/vue.d.ts#L80