TypeScriptLección 7 de 16

Tipos literales y estrechamiento

Un tipo literal es un valor concreto, como "red". Una unión de literales se convierte en una lista corta de opciones permitidas.

Lo esencial

  • type Size = "S" | "M" | "L": el compilador rechaza una errata como "XL".
  • Estrechamiento: tras comprobar con === o typeof, TypeScript afina el tipo en esa rama.
  • Un switch sobre literales estrecha el tipo en cada case.
  • Si se cubren todas las opciones, no hace falta return después del switch.

Ejemplo

type Size = "S" | "M" | "L"; function cupPrice(size: Size): number {  if (size === "S") return 2;  if (size === "M") return 3;  return 4; // only "L" is left here} const order: Size = "M";// const wrong: Size = "XL"; // error: "XL" is not assignable to type Size function describe(value: string | number | null): string {  if (value === null) return "empty";  if (typeof value === "number") return `number ${value.toFixed(1)}`;  return `text ${value.toUpperCase()}`;} console.log(`Cup ${order}: ${cupPrice(order)}`);console.log(describe(null));console.log(describe(2));console.log(describe("hi"));

En cupPrice, tras los dos if solo queda "L". En describe cada comprobación descarta una opción: primero null, después number, y al final queda string.

Tarea

Cómo usar el editor⌘ Enter o Ctrl Enter ejecuta el código, ⇧ ⌘ Enter comprueba la tarea.Tab y Mayús Tab sangran la línea o la selección; Esc y luego Tab sale del editor.La comprobación compara lo que imprimió el programa con la tarea; los espacios al final de línea no cuentan.Tras dos comprobaciones fallidas puedes ver la solución. Tu código se guarda en este navegador.

Limita Light a tres colores y escribe next con un switch: red → green → yellow → red. El programa imprime «1: red», «2: green», «3: yellow», «4: red».

Salida

Aquí aparecerá lo que imprima el programa.