Tipos Especiales
Documentación de los tipos especiales en TypeScript y su uso en funciones y variables.
Tipos Especiales en TypeScript
TypeScript ofrece tipos de datos especiales para controlar el comportamiento del compilador en situaciones donde los tipos primitivos convencionales no son suficientes.
1. Tipo void
Representa la ausencia de un valor de retorno. Se utiliza principalmente en funciones que ejecutan una acción pero no devuelven ningún dato mediante la sentencia return.
typescript// Función que realiza una acción pero no retorna nada
function mostrarMensaje(nombre: string): void {
console.log(`Hola, ${nombre}`);
}
// ✅ Válido: Ejecutar la función
mostrarMensaje("Carlos");
// ❌ Error: No se puede asignar el resultado de una función void a un tipo de dato
// let resultado: string = mostrarMensaje("Carlos");
2. Tipo any
Desactiva completamente el sistema de comprobación de tipos de TypeScript. Permite asignar cualquier valor y cambiar de tipo en cualquier momento. (Se recomienda evitar su uso).
typescriptlet datoFlexible: any = "Carlos";
// ✅ Válido: Permite reasignar a cualquier tipo sin error
datoFlexible = 25;
datoFlexible = true;
3. Tipo unknown
Es la alternativa segura a any. Permite almacenar cualquier tipo de valor, pero TypeScript te obliga a verificar el tipo con typeof antes de realizar operaciones con él.
typescriptlet datoDesconocido: unknown = "Carlos";
// ❌ Error: No se puede usar métodos de string directamente sin verificar
// console.log(datoDesconocido.toUpperCase());
// ✅ Válido: Se debe verificar el tipo antes de usarlo
if (typeof datoDesconocido === "string") {
console.log(datoDesconocido.toUpperCase()); // Imprime "CARLOS"
}
4. Tipo never
Representa valores que nunca llegan a suceder. Se utiliza en funciones que lanzan una excepción o entran en un bucle infinito, por lo que nunca terminan su ejecución de forma normal.
typescript// Función que siempre lanza un error y jamás retorna un valor
function lanzarError(mensaje: string): never {
throw new Error(mensaje);
}
// ❌ Error: Un tipo never no produce ningún valor asignable
// let valor: string = lanzarError("Error crítico");
Tabla Resumen
| Tipo | Descripción | Caso de Uso Principal |
|---|---|---|
void | La función no devuelve nada | function(): void |
any | Desactiva el control de tipos | Evitar en producción |
unknown | Valor de tipo incierto pero seguro | Requiere comprobación typeof |
never | Código inalcanzable o que lanza error | Excepciones o bucles infinitos |