Interviewfragen zu TypeScript (Senior) mit Antworten
75 Fragen fürs Vorstellungsgespräch zu TypeScript (Senior) mit richtigen Antworten, Erklärungen und Links zur Dokumentation.
Diesen Test machen- 1.Kann man mit
strictFunctionTypes(x: Dog) => voideiner Variablen vom Typ(x: Animal) => voidzuweisen? - 2.Warum gilt
strictFunctionTypesnicht für eine alshandle(x: Dog): voiddeklarierte Methode? - 3.Was ist
ToArray<string | number>, wenntype ToArray<T> = T extends any ? T[] : nevergilt? - 4.Wie schaltet man die Verteilung eines bedingten Typs über eine Union ab?
- 5.Warum ergibt
type IsNever<T> = T extends never ? true : falsefürIsNever<never>den Typnever? - 6.Wie setzt man
DeepPartial<T>um? - 7.Wozu braucht man Branded Types?
- 8.Wie behält man nur die Eigenschaften eines Typs, deren Werte Funktionen sind?
- 9.Was liefert
Split<'a/b/c'>? - 10.Was sind variadische Tupeltypen?
- 11.Was bringt der Modifikator
constan einem Typparameter (TS 5.0)? - 12.Wozu dient das Utility
NoInfer<T>(TS 5.4)? - 13.Was macht
infer N extends numberin einem bedingten Typ? - 14.In welcher Reihenfolge schreibt man Funktionsüberladungen?
- 15.Wie ergänzt man den Typ
Requestder Bibliothek Express um ein Felduser? - 16.Was verlangt das Flag
verbatimModuleSyntax? - 17.Was verbietet das Flag
erasableSyntaxOnly(TS 5.8)? - 18.Wofür sind Project References (
references,composite)? - 19.Was riskiert man mit
skipLibCheck: true? - 20.Wie findet man die Ursache langsamer Typprüfung in einem großen Projekt?
- 21.Kann man ein
readonly string[]an eine Funktion übergeben, diestring[]annimmt? - 22.Was bringt der Rückgabetyp
thisin einer Klassenmethode? - 23.Wozu dienen die Varianz-Annotationen
inundoutan Typparametern (TS 4.7)? - 24.Warum kann der Template-Typ `
${A}-${B}-${C}` über drei große Unions einen Fehler erzeugen? - 25.Wie funktioniert der Trick
UnionToIntersection? - 26.Warum ist
Record<Status, string>für ein Wörterbuch nach Status nützlicher als{ [k: string]: string }? - 27.Was änderte sich in TS 5.5 an der Inferenz von Typprädikaten?
- 28.Wofür sind
using-Deklarationen (TS 5.2)? - 29.Was liefert
(typeof users)[number], wennusers: User[]ist? - 30.Was ergibt der Mapped Type
{ [K in keyof T]: Box<T[K]> }, wennTdas Tupel[string, number]ist? - 31.Wie bekommt man aus einem Wert den Elementtyp eines
Set<T>oderMap<K, V>? - 32.Wofür ist das Schlüsselwort
declare? - 33.Wie prüft man einen Typ in Tests so, dass es einen Fehler gibt, wenn es KEINEN Compile-Fehler gibt?
- 34.Wann ist die doppelte Assertion
x as unknown as Tgerechtfertigt? - 35.Warum sollte man den Typ
Functionfür Callbacks meiden? - 36.Warum kann man bei
a: { x: string } | { y: number }nichta.xschreiben? - 37.Was ändert das Flag
exactOptionalPropertyTypes? - 38.Was liefert
keyof (A | B), wennA = { id; name }undB = { id; price }ist? - 39.Wie schaltet man die Typprüfung in JS-Dateien ein, ohne zu TS zu migrieren?
- 40.Wie typisiert man einen Parameter, der den Konstruktor einer abstrakten Klasse annimmt?
- 41.Bleibt die Eingrenzung einer
let-Variablen in einem Callback erhalten? - 42.Was ist ein homomorpher Mapped Type, und was behält er?
- 43.Wie typisiert man eine Funktion ähnlich
Promise.allüber einem Tupel von Promises? - 44.Warum empfiehlt man, in einer Bibliothek die Rückgabetypen exportierter Funktionen zu annotieren?
- 45.Warum ist
isolatedDeclarations(TS 5.5) für Monorepos nützlich? - 46.Wie unterscheidet sich
T extends objectvonT extends {}als generische Einschränkung? - 47.Warum ist das Erweitern eines Interfaces für den Compiler schneller als eine Intersection?
- 48.Wie typisiert man einen Reducer so, dass
payloadvomtypeder Action abhängt? - 49.Was liefert
T[keyof T]fürT = { a: string; b: number }? - 50.Wofür nutzt man
declare module '*.svg'? - 51.Warum kompiliert das, und wo ist die Lücke in der Typsicherheit?
- 52.Was ermöglicht die Eliminierung von Endrekursion bei bedingten Typen (TS 4.5)?
- 53.Wie zieht man Routenparameter aus einem Pfad-String-Typ heraus?
- 54.Wie sammelt ein typsicherer Builder Informationen in seinem Typ?
- 55.TypeScript hat keine Higher-Kinded Types. Wie bilden Bibliotheken
F<A>nach, wennFgenerisch ist? - 56.Was bedeutet der Fehler „The inferred type of 'x' cannot be named without a reference to ...“?
- 57.Warum braucht ein duales ESM/CJS-Paket getrennte Deklarationsdateien (z. B.
.d.mtsund.d.cts)? - 58.Was ermöglicht
rewriteRelativeImportExtensions(TS 5.7)? - 59.Was ist das Hauptziel der nativen Portierung von TypeScript (in Go)?
- 60.Wobei helfen die Regeln
no-unsafe-*von typescript-eslint? - 61.Was braucht eine Assertion-Funktion, damit ihr Aufruf eingrenzt?
- 62.Was macht ein Prädikat
this isin einer Klassenmethode? - 63.Was ist
{ id: string } & { id: number }? - 64.Wie bekommt man den Typ der Exporte eines Moduls, ohne seine Werte zu importieren?
- 65.Warum übersieht die Prüfung auf überzählige Eigenschaften hier Fehler?
- 66.Warum kann eine große Union aus String-Literalen den Compiler bremsen?
- 67.Warum kann eine
let-Variable ihre Eingrenzung in einem Callback verlieren, einconstaber nicht? - 68.Warum sollte eine öffentliche Bibliothek
enumin ihrer API meiden? - 69.Wie typisiert man eine Funktion, die die genauen Schlüssel eines übergebenen Objekts behält und die Werte umwandelt?
- 70.Wie verhindert man, dass Nutzer von internen Typen der Bibliothek abhängen?
- 71.Welches Problem kann
strictNullChecks: falsein einem Paket eines Monorepos verursachen? - 72.Warum sind explizite generische Einschränkungen besser als Casts in einer generischen Funktion?
- 73.Was liefert
Object.freezein Bezug auf Typen? - 74.Wie bringt man die Vollständigkeitsprüfung einer Discriminated Union dazu, auch einen fehlenden Fall in der Datenschicht zu finden?
- 75.Warum ist es riskant, einen API-Client nur mit Generics zu typisieren, etwa
get<T>(url): Promise<T>?