Discriminated unions: la característica de TS que más uso en el trabajo

por Lucia Ruiz Alvarez··21 votos

Si no conoces los discriminated unions, para lo que estes haciendo y leete esto.

Ejemplo tipico: una respuesta de API que puede ser exito o error.

type Result<T> =
  | { success: true; data: T }
  | { success: false; error: string }

function handleResult(result: Result<User>) {
  if (result.success) {
    console.log(result.data.name) // TypeScript sabe que existe data
  } else {
    console.log(result.error) // TypeScript sabe que existe error
  }
}

Elegante, seguro y sin casts. Es lo que mas echo de menos cuando vuelvo a JS puro.