Vue3 兼容构建中缺少 VueConstructor 类型?

Mic*_*oße 5 migration typescript vue.js vuejs2 vuejs3

我们正在将带有 TypeScript 的 Vue 2 应用程序迁移到 Vue 3。由于该应用程序相当大,我们需要使用@vue/compat以便能够一次一步地迁移我们的应用程序。

然而,当严格遵循官方迁移指南时,我们在使用类型时遇到了问题VueConstructor

 error  in src/presentation/App.vue:43:25

TS2614: Module '"vue"' has no exported member 'VueConstructor'. Did you mean to use 'import VueConstructor from "vue"' instead?
    41 |
    42 | <script lang="ts">
  > 43 | import Vue, { PropType, VueConstructor } from 'vue';
       |                         ^^^^^^^^^^^^^^
    44 | import { EventEmitter } from 'events';
    45 | import WarningAnonymousEdit from '@/presentation/components/WarningAnonymousEdit.vue';
    46 | import Events from '@/events';
Run Code Online (Sandbox Code Playgroud)

它在 Vue2 应用程序中的使用方式如下:

export default ( Vue as VueConstructor<Vue & InstanceType<typeof StateMixin>> ).extend( {
    mixins: [ StateMixin ],
    name: 'App',
    computed: {
        isSaving(): boolean {
            // methods on ExampleMixin are now known to TypeScript as existing on `this`
            return this.isMethodOnMixin();
        },
    },
    // [...]
} );
Run Code Online (Sandbox Code Playgroud)

上面的代码在 Vue 2 中工作得很好,并且允许 TypeScript 知道 上的方法StateMixin在该类上也可用。

关于如何使其与 Vue3 迁移构建一起工作有什么建议吗?

PS:问题#4330相关,但没有真正帮助

PPS:这个问题过去也询问过PropType不被导出'vue',但通过升级到 TypeScript 4 解决了这个问题。