Estoy tratando de escribir una función que establezca algunas propiedades en sus argumentos (no devuelva un nuevo objeto), el argumento es de una clase que se extiende desde la misma base, es decir
class BaseEvent { string eventName!; } class DeleteEvent extends BaseEvent { string deleteReason; } class UpdateEvent extends BaseEvent { string updatedBy; } const modifyEvent = async ( event: BaseEvent){ switch event.eventName{ case "deleteEvent": event.deleteReason="xyz"; //doesn't work deleteReason doesn't exist on base class return; case "updateEvent": event.updatedBy="abc"; return; } }y entonces probé esto:
switch (true){ case event instanceOf DeleteEvent: event.deleteReason="xyz"; //doesn't work deleteReason doesn't exist on base class return; case event instanceOf UpdateEvent: //still doesn't work event.updatedBy="abc"; return; }También he probado a encasillar
let modifiedEvent= event; //argument event switch event.eventName{ case "updatedEvent": modifiedEvent=<UpdatedEvent> modifiedEvent; //no luck here either }Ahora debería haber una solución simple/limpia para esto, pero lamentablemente mi paciencia se está agotando. Cualquier sugerencia sería muy útil. Nuevamente, quiero tomar un objeto de clase secundaria, ver si es de childA o childB y si es childA, entonces actualizo una propiedad y si es childB, actualizo otra propiedad y estas propiedades no existen en ambos tipos de niños.
EDITAR: también la función es asíncrona porque, según la clase secundaria, estoy haciendo algunas operaciones de lectura de base de datos, etc.