← Wszystkie tematy

Pytania rekrutacyjne TypeScript (Senior) z odpowiedziami

75 pytań na rozmowę rekrutacyjną z tematu TypeScript (Senior) - z poprawnymi odpowiedziami, wyjaśnieniami i linkami do dokumentacji.

Rozwiąż ten test
  1. 1.Czy przy strictFunctionTypes można przypisać (x: Dog) => void do zmiennej typu (x: Animal) => void?
  2. 2.Dlaczego strictFunctionTypes nie działa dla metody zadeklarowanej jako handle(x: Dog): void?
  3. 3.Czym jest ToArray<string | number>, jeśli type ToArray<T> = T extends any ? T[] : never?
  4. 4.Jak wyłączyć rozkładanie typu warunkowego na unię?
  5. 5.Dlaczego type IsNever<T> = T extends never ? true : false daje never dla IsNever<never>?
  6. 6.Jak zaimplementować DeepPartial<T>?
  7. 7.Po co są typy „branded”?
  8. 8.Jak zostawić tylko właściwości typu będące funkcjami?
  9. 9.Co zwraca Split<'a/b/c'>?
  10. 10.Czym są variadic tuple types?
  11. 11.Co daje modyfikator const przy parametrze typu (TS 5.0)?
  12. 12.Do czego służy narzędzie NoInfer<T> (TS 5.4)?
  13. 13.Co robi infer N extends number w typie warunkowym?
  14. 14.W jakiej kolejności pisać przeciążenia funkcji?
  15. 15.Jak dodać pole user do typu Request biblioteki Express?
  16. 16.Czego wymaga flaga verbatimModuleSyntax?
  17. 17.Czego zabrania flaga erasableSyntaxOnly (TS 5.8)?
  18. 18.Do czego służą Project References (references, composite)?
  19. 19.Jakie jest ryzyko włączenia skipLibCheck: true?
  20. 20.Jak znaleźć przyczynę wolnego sprawdzania typów w dużym projekcie?
  21. 21.Czy można przekazać readonly string[] do funkcji, która przyjmuje string[]?
  22. 22.Co daje zwracany typ this w metodzie klasy?
  23. 23.Do czego służą adnotacje wariancji in i out przy parametrach typu (TS 4.7)?
  24. 24.Dlaczego szablonowy typ ` ${A}-${B}-${C} ` z trzech dużych unii może powodować błąd?
  25. 25.Jak działa trik UnionToIntersection?
  26. 26.Dlaczego Record<Status, string> jest przydatniejszy niż { [k: string]: string } dla słownika według statusu?
  27. 27.Co zmieniło się we wnioskowaniu predykatów typów w TS 5.5?
  28. 28.Do czego służą deklaracje using (TS 5.2)?
  29. 29.Co zwraca (typeof users)[number], jeśli users: User[]?
  30. 30.Co da typ mapowany { [K in keyof T]: Box<T[K]> }, jeśli T to krotka [string, number]?
  31. 31.Jak z wartości pobrać typ elementu Set<T> lub Map<K, V>?
  32. 32.Do czego służy słowo kluczowe declare?
  33. 33.Jak sprawdzić typ w testach tak, by błąd pojawił się, gdy NIE ma błędu kompilacji?
  34. 34.Kiedy podwójna asercja x as unknown as T jest uzasadniona?
  35. 35.Dlaczego warto unikać typu Function dla callbacków?
  36. 36.Dlaczego nie można napisać a.x dla a: { x: string } | { y: number }?
  37. 37.Co zmienia flaga exactOptionalPropertyTypes?
  38. 38.Co zwraca keyof (A | B), jeśli A = { id; name }, a B = { id; price }?
  39. 39.Jak włączyć sprawdzanie typów w plikach JS bez migracji na TS?
  40. 40.Jak otypować parametr przyjmujący konstruktor klasy abstrakcyjnej?
  41. 41.Czy zawężenie zmiennej let jest zachowywane wewnątrz callbacku?
  42. 42.Czym jest homomorficzny typ mapowany i co zachowuje?
  43. 43.Jak otypować funkcję podobną do Promise.all dla krotki promise'ów?
  44. 44.Dlaczego zaleca się adnotować zwracane typy eksportowanych funkcji w bibliotece?
  45. 45.Dlaczego isolatedDeclarations (TS 5.5) jest przydatne dla monorepo?
  46. 46.Czym T extends object różni się od T extends {} jako ograniczenie generyka?
  47. 47.Dlaczego rozszerzanie interfejsu jest dla kompilatora szybsze niż przecięcie?
  48. 48.Jak otypować reducer, by payload zależał od type akcji?
  49. 49.Co zwraca T[keyof T] dla T = { a: string; b: number }?
  50. 50.Do czego służy declare module '*.svg'?
  51. 51.Dlaczego to się kompiluje i gdzie jest dziura w poprawności?
  52. 52.Na co pozwala eliminacja rekurencji ogonowej dla typów warunkowych (TS 4.5)?
  53. 53.Jak wyciągnąć parametry trasy z typu stringa ścieżki?
  54. 54.Jak bezpieczny typowo builder gromadzi informacje w swoim typie?
  55. 55.TypeScript nie ma typów wyższego rzędu. Jak biblioteki emulują F<A>, gdzie F jest generyczne?
  56. 56.Co oznacza błąd „The inferred type of 'x' cannot be named without a reference to ...”?
  57. 57.Dlaczego pakiet dual ESM/CJS potrzebuje osobnych plików deklaracji (np. .d.mts i .d.cts)?
  58. 58.Na co pozwala rewriteRelativeImportExtensions (TS 5.7)?
  59. 59.Jaki jest główny cel natywnego (Go) portu TypeScriptu?
  60. 60.W czym pomagają reguły typescript-eslint no-unsafe-*?
  61. 61.Czego wymaga funkcja asercji, by jej wywołanie zawężało typ?
  62. 62.Co robi predykat this is w metodzie klasy?
  63. 63.Czym jest { id: string } & { id: number }?
  64. 64.Jak uzyskać typ eksportów modułu bez importowania jego wartości?
  65. 65.Dlaczego sprawdzanie nadmiarowych właściwości pomija błąd w tym przypadku?
  66. 66.Dlaczego duża unia literałów stringowych może spowolnić kompilator?
  67. 67.Dlaczego zmienna let może tracić zawężenie wewnątrz callbacku, a const je zachowuje?
  68. 68.Dlaczego publiczna biblioteka powinna unikać enum w swoim API?
  69. 69.Jak otypować funkcję, która zachowuje dokładne klucze przekazanego obiektu, przekształcając wartości?
  70. 70.Jak zapobiec uzależnianiu się konsumentów od wewnętrznych typów biblioteki?
  71. 71.Jaki problem może spowodować strictNullChecks: false w jednym pakiecie monorepo?
  72. 72.Dlaczego jawne ograniczenia generyków są lepsze od rzutowania wewnątrz funkcji generycznej?
  73. 73.Co zwraca Object.freeze pod względem typów?
  74. 74.Jak sprawić, by sprawdzanie wyczerpania unii dyskryminowanej wyłapywało brakujący przypadek także w warstwie danych?
  75. 75.Dlaczego typowanie klienta API samymi generykami, jak get<T>(url): Promise<T>, jest ryzykowne?