diff --git a/packages/nuxt/src/app/components/nuxt-link.ts b/packages/nuxt/src/app/components/nuxt-link.ts index 05602b50a519..373dfb9faa51 100644 --- a/packages/nuxt/src/app/components/nuxt-link.ts +++ b/packages/nuxt/src/app/components/nuxt-link.ts @@ -180,7 +180,7 @@ export function defineNuxtLink (options: NuxtLinkOptions) { if (shouldPrefetch) { const nuxtApp = useNuxtApp() let idleId: number - let unobserve: Function | null = null + let unobserve: (() => void)| null = null onMounted(() => { const observer = useObserver() onNuxtReady(() => { @@ -268,8 +268,10 @@ export function defineNuxtLink (options: NuxtLinkOptions) { export default defineNuxtLink({ componentName: 'NuxtLink' }) // --- Prefetching utils --- +type CallbackFn = () => void +type ObserveFn = (element: Element, callback: CallbackFn) => () => void -function useObserver () { +function useObserver (): { observe: ObserveFn } | undefined { if (process.server) { return } const nuxtApp = useNuxtApp() @@ -278,10 +280,10 @@ function useObserver () { } let observer: IntersectionObserver | null = null - type CallbackFn = () => void + const callbacks = new Map() - const observe = (element: Element, callback: CallbackFn) => { + const observe: ObserveFn = (element, callback) => { if (!observer) { observer = new IntersectionObserver((entries) => { for (const entry of entries) {