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
- 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)
Respuesta:
✅ C.
El bloque de código B necesita una comprobación de tipo
¿Cuál es la diferencia entre
any
yunknown
?any
literalmente significa cualquiera, osea que una variable de tipoany
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 comoany
, la diferencia es que a una variable de tipounknown
no es posible acceder a sus metodos y propiedades, antes es necesario hacer una comprobación de tipos:Des esta manera, primero comprobamos que la variable es de tipo
string
antes de poder usar el métodotoUpperCase()
que como sabemos es propio de las cadenas de texto.unknown
permite dar un poco más de seguridad queany
con la comprobación de tipos pero sin perder la capacidad de asignarle cualquier tipo de variable.