So meistern Sie das TypeScript-Vorstellungsgespräch: Top-Fragen für Fortgeschrittene

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

So meistern Sie das TypeScript-Vorstellungsgespräch: Top-Fragen für Fortgeschrittene

\n\n

Ein Vorstellungsgespräch für eine Position als Senior Frontend- oder Fullstack-Entwickler kommt selten ohne tiefgehende Fragen zu TypeScript aus. Wenn Sie grundlegende Typen und Interfaces bereits perfekt beherrschen, müssen Sie für ein erfolgreiches Technical Interview auf einem hohen Niveau die fortgeschrittene Typenstruktur verstehen. In diesem Artikel haben wir die Top-5 Fragen und Aufgaben zusammengestellt, die häufig in TypeScript-Vorstellungsgesprächen für Fortgeschrittene gestellt werden. Jeder Punkt wird mit einer Analyse und Codebeispielen begleitet.

\n\n

1. Bedingte Typen (Conditional Types) und das Schlüsselwort infer

\n\n

Bedingte Typen ermöglichen es, Typen zu erstellen, die von einer Bedingung abhängen. In Kombination mit infer können Sie Teile von Typen „extrahieren", ähnlich wie beim Pattern Matching.

\n\n

Frage: Schreiben Sie den Typ ReturnType (ohne Verwendung des eingebauten Typs).

\n\n

Analyse: Wir verwenden einen bedingten Typ mit infer, um den Rückgabewert einer Funktion zu erfassen.

\n\n
type MyReturnType<T> = T extends (...args: any[]) => infer R ? R : never;\n\n// Beispiel zur Verwendung\nfunction greet(name: string): string {\n  return `Hallo, ${name}`;\n}\n\ntype GreetReturn = MyReturnType<typeof greet>; // string
\n\n

Wie man im Vorstellungsgespräch antwortet: Erklären Sie, dass infer R eine neue Typvariable R erstellt, die den Rückgabetyp aus der Funktionssignatur erfasst. Wenn die Bedingung nicht erfüllt ist (es wurde keine Funktion übergeben), wird der Typ zu never.

\n\n

2. Mapped Types und Modifikatoren

\n\n

Mapped Types ermöglichen es, neue Typen zu erstellen, indem Eigenschaften eines vorhandenen Typs umgewandelt werden. Das fortgeschrittene Niveau umfasst die Arbeit mit den Modifikatoren +, -, as und Schlüsseln über keyof.

\n\n

Frage: Erstellen Sie einen Typ DeepReadonly, der alle Eigenschaften eines Objekts (einschließlich verschachtelter) readonly macht.

\n\n
type DeepReadonly<T> = {\n  readonly [K in keyof T]: T[K] extends Record<string, unknown> \n    ? DeepReadonly<T[K]> \n    : T[K];\n};\n\ninterface User {\n  name: string;\n  address: {\n    city: string;\n    zip: number;\n  };\n}\n\ntype ReadonlyUser = DeepReadonly<User>;\n// Alle Eigenschaften wurden readonly, einschließlich address.city
\n\n

Wie man antwortet: Zeigen Sie den rekursiven Aufruf von DeepReadonly für verschachtelte Objekte. Erklären Sie, wie Record<string, unknown> verwendet wird, um zu prüfen, ob ein Wert ein Objekt ist.

\n\n

3. Template Literal Types (Schablonen-String-Typen)

\n\n

Template Literal Types ermöglichen die Manipulation von String-Typen auf Kompilierungsebene. Dies ist ein leistungsstarkes Werkzeug zur Erstellung strenger APIs.

\n\n

Frage: Implementieren Sie einen Typ EventName, der einen String akzeptiert und den Typ "on{String}" mit korrekter Capitalize-Funktion zurückgibt.

\n\n
type EventName<T extends string> = `on${Capitalize<T>}`;\n\ntype ClickEvent = EventName<'click'>; // "onClick"\ntype FocusEvent = EventName<'focus'>; // "onFocus"\n\n// Fortgeschrittenes Beispiel: Extrahieren aus einem String\ntype ExtractAction<T extends string> = \n  T extends `on${infer Action}` ? Uncapitalize<Action> : never;\n\ntype Action = ExtractAction<'onSubmit'>; // "submit"
\n\n

Wie man antwortet: Weisen Sie auf die eingebauten Typen Capitalize und Uncapitalize hin. Zeigen Sie, wie infer innerhalb von Template Literals zum Parsen von Strings funktioniert.

\n\n

4. Generics mit Einschränkungen und variadischen Tupeln (Variadic Tuple Types)

\n\n

Variadic Tuple Types (eingeführt in TS 4.0) ermöglichen die Arbeit mit Tupeln beliebiger Länge. Sie sind unverzichtbar für die Erstellung typsicherer Funktionen mit einer variablen Anzahl von Argumenten.

\n\n

Frage: Schreiben Sie einen Typ für eine Funktion

Blogs

Buchempfehlungen