Búsqueda de sitios web

javascript - Confusión sobre la lógica de "Esta condición siempre devolverá 'false' ya que los tipos '"a"' y '"b"' no tienen superposición."


Acabo de empezar a aprender TypeScript y actualmente estoy leyendo el manual. Uno de los puntos que menciona es que TypeScript detecta errores de lógica, y da este ejemplo:

const value = Math.random() < 0.5 ? "a" : "b";
if (value !== "a") {
  // ...
} else if (value === "b") {
  // This condition will always return 'false' since 
  // the types '"a"' and '"b"' have no overlap.
  // Oops, unreachable
}

Probablemente hay algo que simplemente no estoy viendo con claridad, pero no puedo entender por qué esto debería generar un error. Así es como lo veo:

  • value puede ser a o b
  • La primera sentencia if verifica si value no es a
  • La sentencia else-if verifica si el valor es b, lo cual siempre sería así si no fuera a (si value no es a; es b)

Entonces, ¿por qué dice que value === "b" siempre devolverá false? Obviamente, esto no funciona de la manera en que lo estoy viendo; parece que me falta algo. Además, no estoy completamente seguro de lo que significa overlap en '"a"' y '"b"' no tienen superposición, así que si alguien pudiera ayudarme a entender esto, sería muy apreciado.

Artículos relacionados