Menu
Coddy logo textTech

El tipo 'never'

Parte de la sección Introducción a TypeScript del Journey de JavaScript de Coddy. Lección 70 de 73.

El tipo never representa valores que nunca ocurren. Esto puede sonar confuso al principio, pero en realidad es bastante lógico cuando piensas en ciertos escenarios en tu código.

El tipo never se utiliza más comúnmente para funciones que nunca retornan con normalidad.

Esto incluye funciones que siempre lanzan un error o contienen bucles infinitos:

function throwError(message: string): never {
  throw new Error(message);
}

function infiniteLoop(): never {
  while (true) {
    // Este bucle nunca termina
  }
}

A diferencia de void, que indica que una función no devuelve un valor significativo, never indica que la función nunca llega a su punto final en absoluto. La ejecución se detiene debido a que se lanza un error o continúa indefinidamente.

challenge icon

Desafío

Fácil

Crea una función llamada throwError que demuestre el tipo de retorno never lanzando siempre un error y nunca retornando normalmente.

La función debe:

  • Recibir un parámetro message de tipo string
  • Lanzar un nuevo Error con el mensaje proporcionado
  • Tener un tipo de retorno explícito de never

Crea una segunda función llamada handleOperation que:

  • Reciba dos parámetros: operation de tipo string y value de tipo number
  • Retorne value * 2 si la operación es "double"
  • Retorne value / 2 si la operación es "half"
  • Llame a throwError con el mensaje "Invalid operation: [operation]" para cualquier otra operación
  • Tenga un tipo de retorno explícito de number

Prueba tus funciones con las siguientes operaciones:

  • Llama a handleOperation("double", 5) e imprime el resultado
  • Llama a handleOperation("half", 8) e imprime el resultado
  • Llama a handleOperation("triple", 3) e imprime el resultado (esto lanzará un error)

Crea casos de prueba adicionales:

  • Llama a handleOperation("double", 15) e imprime el resultado
  • Llama a handleOperation("half", 20) e imprime el resultado

Pruébalo tú mismo

// TODO: Escribe tu código aquí
// Crea la función throwError con tipo de retorno never
// Crea la función handleOperation con tipo de retorno number

// Prueba las funciones con bloques try-catch
try {
    console.log(handleOperation("double", 5));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("half", 8));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("triple", 3));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("double", 15));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("half", 20));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Introducción a TypeScript

Practica por tu cuenta: Compilador de JavaScript online