Question d'entretien pour Développeur full stack

Quelle est la différence entre any et unknown en TypeScript, et quand utilisez-vous l'un ou l'autre ?

Ce que le recruteur cherche à évaluer, comment structurer votre réponse et un exemple parlé à adapter.

Réponse rapide

any coupe la vérification de types pour cette valeur, donc chaque accès à une propriété et chaque appel compile même quand c'est faux. unknown accepte n'importe quelle valeur en entrée mais vous force à la restreindre avec un typeof, un type guard ou un parsing de schéma avant de pouvoir l'utiliser. Utilisez unknown aux frontières de confiance comme les réponses de fetch et JSON.parse. N'utilisez any quasiment jamais.

Pourquoi les recruteurs posent cette question

Ça sépare ceux qui utilisent le système de types de ceux qui le combattent. Le recruteur vérifie si vous pensez aux frontières de confiance, si vous savez que les types TypeScript s'évaporent à l'exécution, et si vous validez les données qui arrivent du réseau ou d'une base plutôt que d'affirmer une forme en croisant les doigts. Ça fait aussi ressortir votre façon de gérer le code historique, parce que la réponse honnête passe en général par une histoire de migration plutôt que par la pureté.

Comment structurer votre réponse

  • Définissez les deux en une phrase chacun.
  • Dites que les types sont effacés à l'exécution, donc la validation est un sujet à part.
  • Nommez les frontières où unknown a sa place.
  • Donnez le cas étroit où any reste acceptable.

Exemple de réponse

Exemple parlé, à la première personne

Ma règle, c'est que any est un bug que je n'ai pas encore trouvé. Si j'écris any, j'ai dit au compilateur d'arrêter de m'aider et l'échec ressort à l'exécution dans le navigateur d'un utilisateur. unknown, c'est la version honnête : ça dit je ne sais pas ce que c'est, et le compilateur m'oblige à prouver la forme avant d'y toucher. En pratique, ça veut dire que tout ce qui franchit une frontière de confiance démarre en unknown. Une réponse de fetch, un corps de webhook, ce qui sort de JSON.parse ou de localStorage. Dans une fintech où j'ai travaillé, on écrivait à la main nos types de réponses d'API et ils ont dérivé du backend en deux mois environ, donc un champ devenu nullable a commencé à faire planter le rendu d'un tableau en production. On est passés à un parsing avec zod à la frontière et à l'inférence des types TypeScript depuis le schéma, et toute cette catégorie de bugs a disparu. Le seul endroit où je tolère encore any, c'est dans un helper générique très circonscrit, et même là unknown plus un guard fait en général l'affaire.

Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.

Voir comment ça marche

Questions de relance à prévoir

  • Comment gardez-vous ces schémas synchronisés avec le backend ?
  • Quelle est la différence entre une assertion de type et un type guard ici ?
  • Comment introduiriez-vous ça dans une base de code déjà pleine de any ?

Autres questions pour Développeur full stack

Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.

Prédire mes questions

Répétez les questions difficiles avant qu'on vous les pose

Entraînez-vous avec un copilote en direct, puis présentez-vous prêt. Un Session Pass à $29 vous accompagne pendant l'entretien, sans abonnement et sans engagement.

Obtenir GhostPilot