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