Nuxt 3 使用自定义插件扩展 NuxtApp 类型

Dmy*_*iev 4 plugins typescript nuxt.js

当我向 nuxtApp 提供插件时,它知道它的类型

在此输入图像描述

但是当我尝试在页面上使用它时,它仅显示类型“any” 在此输入图像描述

我可以手动添加类型来扩展 NuxtApp 类型吗?或者我该怎么做才能让它知道正确的插件类型?

我在想这样的事情

import type { order } from '~/plugins/order'

interface PluginsInjections {
  $order: ReturnType<order>
}

declare global {
  interface NuxtApp extends PluginsInjections {}
}
Run Code Online (Sandbox Code Playgroud)

Dmy*_*iev 7

我想到了

我查了一下 i18n 插件是如何完成的 国际化插件

并在 types/index.d.ts 中为自己做了同样的事情

import type { order } from '~/plugins/order'

interface PluginsInjections {
  $order: ReturnType<typeof order>
}

declare module '#app' {
  interface NuxtApp extends PluginsInjections {}
}

declare module 'nuxt/dist/app/nuxt' {
  interface NuxtApp extends PluginsInjections {}
}

declare module '@vue/runtime-core' {
  interface ComponentCustomProperties extends PluginsInjections {}
}
Run Code Online (Sandbox Code Playgroud)

现在它知道该插件存在,并帮助自动完成 在此输入图像描述

在此输入图像描述