Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

243
Vistas
Cómo extender la propiedad de ComponentPublicInstance proporcionada por Vue 3 en un determinado archivo vue

Quiero agregar una propiedad personalizada a ComponentPublicInstance. Ejemplo, tengo un archivo Vue. Está usando la API de composición de Vue 3 con <script setup lang='ts'> y declaré una función, como esta:

 <script setup lang='ts'> function close() { console.log("It will be closed") } </script>

Rediné este archivo mediante el render proporcionado por vue, y esto es parte de mi código:

 export const Notification = function (options: Options){ const container = document.createElement('div') const vnode = h(notification, {...options}) // The Render contribute to make vnode processing diff and patch and then mounted on the Container render(vnode, container) const instance = vnode.component?.proxy addIntance(vnode.component as ComponentInternalInstance) console.log("vnode.component", vnode.component) return instance } as NotificationProperty

Hay un Array llamado instanceList que guarda la instancia de Notificación, y quiero llamar al close en la instancia, y recibí un error Property 'close' does not exist on type 'ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>>'. . Este es mi código:

 Notification.closeAll = function () { instanceList.forEach((instance: ComponentInternalInstance, index: number) => { instance.proxy?.close() // There is an error. instanceList.splice(1, index) }) }

He intentado usar los siguientes métodos.

  1. usando defineExpose para exportar la función de close .
  2. para declarar un módulo en shims-vue.d.ts
 declare module "./components/notification/Notification.vue" { interface ComponentCustomProperties { close: () => any; } }

o

 declare module "@vue/runtime-core" { interface ComponentCustomProperties { close: () => any; } }

Ambos no están funcionando.

Ahora, no tengo idea de cómo lidiar con el problema. Gracias por tu ayuda.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda