Interviewfrage für Full-Stack-Entwickler

Was ist der Unterschied zwischen any und unknown in TypeScript, und wann greifst du zu welchem?

Worauf der Interviewer abzielt, wie du deine Antwort aufbaust und ein gesprochenes Beispiel zum Anpassen.

Kurzantwort

any schaltet die Typprüfung für diesen Wert ab, jeder Property-Zugriff und jeder Aufruf kompiliert also, selbst wenn er falsch ist. unknown nimmt jeden Wert an, zwingt dich aber, ihn mit einem typeof-Check, einem Type Guard oder einem Schema-Parse einzugrenzen, bevor du ihn benutzen kannst. Greif zu unknown an Vertrauensgrenzen wie fetch-Antworten und JSON.parse. Zu any greifst du fast nie.

Warum Interviewer das fragen

Das trennt Leute, die das Typsystem nutzen, von Leuten, die dagegen ankämpfen. Der Interviewer prüft, ob du in Vertrauensgrenzen denkst, ob du weißt, dass TypeScript-Typen zur Laufzeit verdampfen, und ob du Daten aus Netzwerk oder Datenbank validierst, statt eine Form zu behaupten und zu hoffen. Es zeigt außerdem, wie du mit Altcode umgehst, weil die ehrliche Antwort meist eine Migrationsgeschichte ist und keine Reinheitslehre.

So baust du deine Antwort auf

  • Definier beide in je einem Satz.
  • Sag, dass Typen zur Laufzeit gelöscht sind, Validierung also ein eigenes Thema ist.
  • Nenn die Grenzen, an die unknown gehört.
  • Nenn den engen Fall, in dem any noch in Ordnung ist.

Beispielantwort

Gesprochenes Beispiel, erste Person

Meine Regel ist, dass any ein Bug ist, den ich nur noch nicht gefunden habe. Wenn ich any schreibe, habe ich dem Compiler gesagt, er soll aufhören zu helfen, und der Fehler taucht stattdessen zur Laufzeit im Browser eines Nutzers auf. unknown ist die ehrliche Variante: es sagt, ich weiß nicht, was das ist, und der Compiler zwingt mich, die Form zu beweisen, bevor ich es anfasse. Praktisch heißt das, dass alles, was eine Vertrauensgrenze überquert, als unknown startet. Eine fetch-Antwort, ein Webhook-Body, alles was aus JSON.parse oder localStorage kommt. Bei einem Fintech, für das ich gearbeitet habe, haben wir unsere API-Response-Typen von Hand geschrieben, und die sind innerhalb von etwa zwei Monaten vom Backend abgedriftet, ein Feld, das nullable wurde, hat dann in der Produktion ein Tabellen-Rendering zerlegt. Wir sind auf Parsen mit zod an der Grenze umgestiegen und haben die TypeScript-Typen aus dem Schema abgeleitet, und diese ganze Bugklasse war weg. Der einzige Ort, an dem ich any noch zulasse, ist ein eng begrenzter generischer Helper, und selbst da reicht meist unknown plus ein Guard.

Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.

So funktioniert es

Nachfragen, mit denen du rechnen solltest

  • Wie hältst du diese Schemas mit dem Backend synchron?
  • Was ist hier der Unterschied zwischen einer Type Assertion und einem Type Guard?
  • Wie würdest du das in eine Codebase einführen, die schon voller any ist?

Weitere Fragen für Full-Stack-Entwickler

Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.

Meine Fragen vorhersagen

Üb die harten Fragen, bevor sie gestellt werden

Trainier mit einem Live-Copiloten und geh dann vorbereitet rein. Ein $29 Session Pass bringt dich durch das Vorstellungsgespräch, ohne Abo und ohne Bindung.

GhostPilot holen