Tengo un método getRoute que toma un video . El video es del tipo LiveVideo o RecordedVideo . Mi problema es que el campo getLiveID solo está en LiveVideo , por lo que obtengo la property de problema del editor getLiveID does not exist on type RecordedVideo . ¿Cuál es la forma de evitar esto? Quiero usar 1 método para manejar ambos y manejar la lógica condicional dentro.
getRoute(video: LiveVideo | RecordedVideo) { if (video.getLiveID) { /// } else { /// } }Puedes usar instancia de :
getRoute(video: LiveVideo | RecordedVideo) { if (video instanceof LiveVideo) { // "video" is of type LiveVideo here... } else { // ... } }Puede verificar qué tipo tiene usando in . Por ejemplo:
getRoute(video: LiveVideo | RecordedVideo) { if ("getLiveId" in video) { // treat as LiveVideo } else { // as RecordedVideo } }type LiveVideo = { getLiveID: Function, id: string } type RecordedVideo = { id: string } function getRoute(video: LiveVideo | RecordedVideo) { if ((video as LiveVideo)?.getLiveID) { /// } else { /// } }