DEV Community

Cristian Fernando
Cristian Fernando

Posted on • Updated on

Paracetamol.ts💊| #04: Explica este código TypeScript

Explica este código TypeScript

Dificultad: Intermedio

¿Cúal es la diferencia entre el bloque de código A y el bloque de código B?

//A
let y:any = "hola";
console.log(y.toUpperCase()) // HOLA

//B
let x:unknown = "hola";
console.log(x.toUpperCase()) // HOLA
Enter fullscreen mode Exit fullscreen mode
  • A. No hay ninguna diferencia
  • B. El tipo de dato unknown no existe en TypeScript
  • C. El bloque de código B necesita una comprobación de tipo
  • D. Ninguno de los anteriores

Respuesta en el primer comentario.


Top comments (1)

Collapse
 
duxtech profile image
Cristian Fernando • Edited

Respuesta:
✅ C. El bloque de código B necesita una comprobación de tipo

¿Cuál es la diferencia entre any y unknown?

any literalmente significa cualquiera, osea que una variable de tipo any puede almacenar cualquier valor, esto hace que TypeScript pierda un poco de su magia por eso se recomienda usarlo en migraciones de proyectos JavaScript a TypeScript o para la manipulación de librerías de terceros.

unknown literalmente significa desconocido, en escencia también puede recibir cualquier tipo de dato como any, la diferencia es que a una variable de tipo unknown no es posible acceder a sus metodos y propiedades, antes es necesario hacer una comprobación de tipos:

let x:unknown = "hola";
if(typeof x === "string") console.log(x.toUpperCase()) // HOLA
Enter fullscreen mode Exit fullscreen mode

Des esta manera, primero comprobamos que la variable es de tipo string antes de poder usar el método toUpperCase() que como sabemos es propio de las cadenas de texto.

unknown permite dar un poco más de seguridad que any con la comprobación de tipos pero sin perder la capacidad de asignarle cualquier tipo de variable.