Pregunta de entrevista para Desarrollador full stack

¿Cuál es la diferencia entre any y unknown en TypeScript y cuándo recurres a cada uno?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

any apaga la comprobación de tipos para ese valor, así que cada acceso a propiedad y cada llamada compilan aunque estén mal. unknown acepta cualquier valor de entrada pero te obliga a estrecharlo con una comprobación typeof, un type guard o un parseo de esquema antes de poder usarlo. Recurre a unknown en las fronteras de confianza como respuestas de fetch y JSON.parse. Recurre a any casi nunca.

Por qué lo preguntan los entrevistadores

Esto separa a quien usa el sistema de tipos de quien pelea con él. El entrevistador comprueba si piensas en fronteras de confianza, si sabes que los tipos de TypeScript se evaporan en tiempo de ejecución y si validas los datos que llegan de la red o de una base de datos en vez de afirmar una forma y cruzar los dedos. También saca a la luz cómo tratas el código heredado, porque la respuesta honesta suele incluir una historia de migración en vez de pureza.

Cómo estructurar tu respuesta

  • Define ambos en una frase cada uno.
  • Di que los tipos se borran en tiempo de ejecución, así que la validación va aparte.
  • Nombra las fronteras donde corresponde usar unknown.
  • Da el caso estrecho en el que any sigue siendo aceptable.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Mi regla es que any es un bug que todavía no he encontrado. Si escribo any, le he dicho al compilador que deje de ayudarme y el fallo aparece en tiempo de ejecución en el navegador de un usuario. unknown es la versión honesta: dice que no sé qué es esto, y el compilador me obliga a demostrar la forma antes de tocarlo. En la práctica eso significa que todo lo que cruza una frontera de confianza empieza como unknown. Una respuesta de fetch, el cuerpo de un webhook, lo que salga de JSON.parse o de localStorage. En una fintech en la que trabajé escribíamos a mano los tipos de respuesta de la API y se desincronizaron del backend en unos dos meses, así que un campo que pasó a ser nullable empezó a romper el render de una tabla en producción. Pasamos a parsear con zod en la frontera y a inferir los tipos de TypeScript desde el esquema, y esa clase entera de bug desapareció. El único sitio donde todavía permito any es dentro de un helper genérico muy acotado, e incluso ahí unknown más un guard suele bastar.

¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.

Mira cómo funciona

Preguntas de seguimiento que puedes esperar

  • ¿Cómo mantienes esos esquemas sincronizados con el backend?
  • ¿Cuál es la diferencia entre una aserción de tipo y un type guard aquí?
  • ¿Cómo introducirías esto en una base de código ya llena de any?

Más preguntas para Desarrollador full stack

Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.

Predecir mis preguntas

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot