如何包含节点模块包的类型定义?

How do I include the type definition of a node module package?

我正在尝试包含 vue-router 4 包中的 Typescript 类型定义,因此我可以使用其中一种类型来构建路由数组,只是为了看看我是否可以获得更好的错误而不是我目前在创建预填充数组时生成的怪物。目前我在尝试使用 RouteRecordRaw 类型定义数组时遇到以下错误:

TS2304: Cannot find name 'RouteRecordRaw'.

这在 node_modules/vue-router/dist/vue-router.d.ts 中定义。我的 tsconfig.json 包含 compilerOptions 键和 types 键。据我了解,它将尝试在 typeRoots 中定义的任何内容下查找 types 下定义的所有文件夹。如果未定义 typeRoots,它将使用默认值 [ 'node_modules/@types' ]。我尝试通过添加 node_modulesnode_modules/vue-routernode_modules/vue-router/dist 并将 vue-routerdist 添加到 types 来解决这个问题,但似乎并不多正在发生。

我尝试按照 中的建议添加注释 /// <reference types="vue-router" />,这是由 typescript 提取的(如果我拼错它,它会出错),但也没有帮助。

我似乎也无法以任何其他方式包含类型定义(除非我 copy/paste 我猜是我自己的类型文件,但我想避免这种情况)。该类型在前面提到的文件中导出为 export declare type RouteRecordRaw = RouteRecordSingleView | RouteRecordMultipleViews | RouteRecordRedirect;。是否有另一种方法来包含此类型定义?

事实证明,我所做的任何事情都不需要做。我已经在文件顶部有一个 import * as VueRouter from 'vue-router';。事实证明,您可以像导入任何其他内容一样导入类型。正确的语法结果是:

export const routes: VueRouter.RouteRecordRaw[] = [];