Aserciones de tipo
Parte de la sección Introducción a TypeScript del Journey de JavaScript de Coddy — lección 68 de 73.
A veces TypeScript no tiene suficiente información para determinar el tipo exacto de un valor, pero tú como desarrollador sabes más sobre lo que realmente es ese valor. Las aserciones de tipo (type assertions) te permiten decirle a TypeScript "confía en mí, sé que este valor es de este tipo específico".
TypeScript proporciona dos sintaxis para las aserciones de tipo. La sintaxis as es el enfoque más común:
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;También puedes usar la sintaxis de corchetes angulares, aunque es menos común en el TypeScript moderno:
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Desafío
FácilCrea una función que procese datos de una simulación de API externa. Trabajarás con valores de tipo unknown y usarás aserciones de tipo para acceder de forma segura a sus propiedades.
Crea una variable apiResponse de tipo unknown y asígnale la siguiente cadena JSON:
{"userId": 42, "username": "alice_dev", "isActive": true}Crea una función llamada processUserData que:
- Toma un parámetro
datade tipounknown - Usa una aserción de tipo para tratar
datacomo unstring - Analiza la cadena JSON usando
JSON.parse() - Usa otra aserción de tipo para tratar el resultado analizado como un objeto con las propiedades
userId(number),username(string) eisActive(boolean) - Devuelve una cadena formateada:
"User [userId]: [username] (Active: [isActive])" - Tiene un tipo de retorno explícito de
string
Crea datos de prueba adicionales:
- Crea
secondApiResponsede tipounknowncon la cadena JSON:{"userId": 15, "username": "bob_admin", "isActive": false} - Crea
thirdApiResponsede tipounknowncon la cadena JSON:{"userId": 99, "username": "charlie_user", "isActive": true}
Prueba tu función e imprime los siguientes resultados:
- Llama a
processUserDataconapiResponsee imprime el resultado - Llama a
processUserDataconsecondApiResponsee imprime el resultado - Llama a
processUserDataconthirdApiResponsee imprime el resultado
Hoja de referencia
Las aserciones de tipo te permiten indicarle a TypeScript el tipo específico de un valor cuando sabes más de lo que TypeScript puede inferir.
Usa la sintaxis as (la más común):
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;Sintaxis alternativa de corchetes angulares:
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;Pruébalo tú mismo
// Crear las variables de respuesta de la API
const apiResponse: unknown = '{"userId": 42, "username": "alice_dev", "isActive": true}';
const secondApiResponse: unknown = '{"userId": 15, "username": "bob_admin", "isActive": false}';
const thirdApiResponse: unknown = '{"userId": 99, "username": "charlie_user", "isActive": true}';
// TODO: Crear la función processUserData aquí
// Probar la función e imprimir los resultados
console.log(processUserData(apiResponse));
console.log(processUserData(secondApiResponse));
console.log(processUserData(thirdApiResponse));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 avanzadas8Enums
¿Qué es un Enum numérico?Uso de Enums numéricos¿Qué es un Enum de string?Uso de Enums de stringEnums heterogéneosResumen: Uso de Enums11Temas avanzados
Aserciones de tipoGuardas de tipo: in & instanceofEl tipo 'never'Tipos anulables ('strictNull')Firmas de índice para objetosResumen: Ajuste de tipos3Estructura 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 Tuplas