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.
Desafío
FácilCrea 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
messagede tipostring - Lanzar un nuevo
Errorcon el mensaje proporcionado - Tener un tipo de retorno explícito de
never
Crea una segunda función llamada handleOperation que:
- Reciba dos parámetros:
operationde tipostringyvaluede tiponumber - Retorne
value * 2si la operación es"double" - Retorne
value / 2si la operación es"half" - Llame a
throwErrorcon 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}`);
}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
1Primeros pasos con TS
¿Qué es TypeScript?¿Por qué usar TypeScript?Tu primer código en TypeScriptProceso de compilación y erroresResumen: Introducción a TS4Trabajando con funciones
Tipado de parámetros y valores de retornoTipado de funciones de flechaEl tipo de retorno 'void'Parámetros opcionales con '?'Valores de parámetros por defectoTipado de parámetros restDefinición de tipos de funcionesRepaso: Construcción de funciones tipadas2Tipos principales
Tipos básicos: str, num, booleanEl tipo 'any': Vía de escapeEl tipo 'unknown'Trabajando con 'null' y 'undef'Inferencia de tipos en acciónAnotaciones de tipo explícitasResumen: Práctica de tipos principales5Tipos: Alias, Uniones e Intersecciones
Alias de tipos para primitivosTipos de unión ('|')Trabajando con tipos de uniónTipos literalesTipos de intersección ('&')Combinando alias de tiposRepaso: Combinaciones de tipos avanzadas3Estructura de datos: Arrays y Tuplas
Arrays tipadosModificador 'readonly' para Arrays¿Qué es una Tupla?Declaración y acceso a TuplasDesestructuración de TuplasTuplas ReadonlyArrays tipados multidimensionalesOperador Spread con ArraysResumen: Arrays y TuplasPractica por tu cuenta: Compilador de JavaScript online