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:
valuepuede seraob- La primera sentencia if verifica si
valueno esa - La sentencia else-if verifica si el valor es
b, lo cual siempre sería así si no fueraa(sivalueno esa; esb)
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.