Когда я предоставляю плагин для nuxtApp, он знает его тип
но когда я пытаюсь использовать его на странице, он показывает только тип "любой"
Могу ли я добавить типы для расширения типа NuxtApp вручную? или что я могу сделать, чтобы он знал правильный тип плагина?
я думаю о чем-то вроде этого
import type { order } from '~/plugins/order'
interface PluginsInjections {
$order: ReturnType<order>
}
declare global {
interface NuxtApp extends PluginsInjections {}
}






я понял
Я посмотрел, как это делается в плагине 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 {}
}
теперь он знает, что плагин существует, и помогает с автозаполнением
Вам не нужно вручную добавлять типы для свойств и функций, внедряемых плагинами, поскольку предполагается, что они будут работать автоматически, как описано в документации: https://nuxt.com/docs/guide/directory-structure/plugins#typing- плагины Вместо этого вы должны выяснить, почему автоматическое определение не работает должным образом.
Более продвинутые варианты использования могут потребовать от вас ручного определения типов внедренных свойств. В этом случае вы можете следовать этому примеру:
// Your plugin
export default defineNuxtPlugin(() => {
return {
provide: {
hello: (msg: string) => `Hello ${msg}!`
}
}
})
// index.d.ts
declare module '#app' {
interface NuxtApp {
$hello (msg: string): string
}
}
declare module '@vue/runtime-core' {
interface ComponentCustomProperties {
$hello (msg: string): string
}
}
export { }
от: https://nuxt.com/docs/guide/directory-structure/plugins#advanced
Но помните, что это маскирует последствия другой проблемы в вашей кодовой базе, а не устраняет основную причину.
Обновлено, чтобы лучше отразить то, что я пытался донести. Добавление типов вручную не устраняет тот факт, что автоматическое определение не работает.