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.
defineExpose para exportar la función de close .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.