Tengo una función que toma 2 tipos.
handleDragging(e: CustomEvent<SelectionHandleDragEventType | GridHandleDragEventType>) { e.stopPropagation(); const newValue = this.computeValuesFromPosition(e.detail.x, e.detail.y, e.detail.variant); // other same code }) el problema es que GridHandleDragEventType no tiene una variant como parte del tipo. En esos casos, no me importa enviar null , pero sigo teniendo el problema de TS: Property 'variant' does not exist on type 'GridHandleDragEventType'. ¿Hay una manera limpia de resolver esto?
Puede probar una de las dos formas, yo elegiría la Parcial, pero como necesita la propiedad variante, puede usar la segunda.
e: CustomEvent<SelectionHandleDragEventType | Partial<GridHandleDragEventType>>o
e: CustomEvent<SelectionHandleDragEventType | GridHandleDragEventType & {variant: null}>Aquí hay un ejemplo que aprovecha la tipificación estructural de TypeScript para usar { detail: { x: number, y: number, variant?: string } } en lugar de SelectionHandleDragEventType | GridHandleDragEventType .
Supongo que x e y son number y la variant es string ; si esos no son los tipos reales de esas propiedades, debería poder cambiar este ejemplo:
handleDragging(e: CustomEvent<{ detail: { x: number, y: number, variant?: string } }>) { e.stopPropagation(); const newValue = this.computeValuesFromPosition(e.detail.x, e.detail.y, e.detail.variant ?? null); }) Esto también establece de manera predeterminada que la variant sea null para GridHandleDragEventType , como mencionó, pero no necesariamente necesita eso si computeValuesFromPosition maneja que el parámetro de variant no esté undefined .