El tipo 'unknown'
Parte de la sección Introducción a TypeScript del Journey de JavaScript de Coddy. Lección 8 de 73.
Al igual que any, una variable de tipo unknown puede contener cualquier valor:
let userInput: unknown = "Hello";
userInput = 42; // Sin error
userInput = true; // Sin errorLa diferencia clave es que TypeScript no te permitirá realizar operaciones sobre un valor unknown sin comprobar primero de qué tipo es en realidad. Esto evita muchos errores en tiempo de ejecución:
let data: unknown = "TypeScript";
// data.toUpperCase(); // ¡Error! TypeScript no sabe que es una cadena
// Debes comprobar el tipo primero
if (typeof data === "string") {
console.log(data.toUpperCase()); // ¡Ahora es seguro!
}Esto hace que unknown sea mucho más seguro que any porque te obliga a verificar el tipo antes de usar métodos o propiedades específicos del tipo.
Desafío
FácilCrea una variable llamada userInput con el tipo unknown y asígnale la cadena "TypeScript".
Luego escribe un protector de tipo (type guard) usando typeof para comprobar si userInput es una cadena. Si es una cadena, imprime la versión en mayúsculas de la cadena en la consola. Si no es una cadena, imprime "Not a string" en la consola.
Esto demuestra cómo unknown requiere una comprobación de tipo antes de que puedas usar de forma segura métodos específicos de tipo como toUpperCase().
Pruébalo tú mismo
// Crea la variable userInput con tipo unknown
let userInput: unknown = "TypeScript";
// TODO: Escribe tu código aquí
// Usa typeof para verificar si userInput es una cadena
// Si es una cadena, imprime la versión en mayúsculas
// Si no es una cadena, imprime "Not a string"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: Playground de TypeScript