← Усі теми

Питання на співбесіді з TypeScript (Middle) з відповідями

75 запитань для співбесіди з теми TypeScript (Middle) - з правильними відповідями, поясненнями й посиланнями на документацію.

Пройти цей тест
  1. 1.Що таке користувацький type guard?
  2. 2.Як гарантувати, що switch обробив усі варіанти union?
  3. 3.Що означає <T extends { id: string }> у дженерику?
  4. 4.Як типізувати функцію getProp(obj, key), щоб результат залежав від ключа?
  5. 5.Що таке зіставлений (mapped) тип?
  6. 6.Що робить умовний тип T extends string ? 'text' : 'other'?
  7. 7.Що робить infer у type ElementType<T> = T extends (infer U)[] ? U : never?
  8. 8.Що поверне Awaited<Promise<Promise<number>>>?
  9. 9.Чим Exclude<T, U> відрізняється від Omit<T, K>?
  10. 10.Як працюють перевантаження функцій у TypeScript?
  11. 11.Що таке declaration merging?
  12. 12.Для чого потрібен абстрактний клас?
  13. 13.Чим protected відрізняється від private у класах TypeScript?
  14. 14.Що робить оператор satisfies?
  15. 15.Що таке шаблонні літеральні типи?
  16. 16.Чому замість enum часто використовують об'єкт as const?
  17. 17.Чим const enum відрізняється від звичайного enum?
  18. 18.Чим простори імен (namespace) відрізняються від ES-модулів?
  19. 19.Що таке функція-твердження (assertion function)?
  20. 20.Як отримати props нативної кнопки, щоб розширити їх у своєму компоненті?
  21. 21.Як типізувати хуки Redux Toolkit у застосунку на TypeScript?
  22. 22.Як типізувати дженерик-компонент списку?
  23. 23.Що робить Extract<'a' | 'b' | 1 | 2, string>?
  24. 24.Що поверне NonNullable<string | null | undefined>?
  25. 25.Чим object, {} і Record<string, unknown> відрізняються як типи?
  26. 26.Як TypeScript обробляє оператор in під час звуження?
  27. 27.Що роблять -readonly і -? у mapped type?
  28. 28.Як перейменувати ключі в mapped type?
  29. 29.Чому Object.keys(user) повертає string[], а не (keyof User)[]?
  30. 30.Що дає прапорець noUncheckedIndexedAccess?
  31. 31.Чим unknown[] відрізняється від any[] у параметрі функції?
  32. 32.Що таке декоратори в TypeScript 5?
  33. 33.Що робить import type { User } from './types'?
  34. 34.Чим interface кращий за перетин для розширення великих об'єктних типів?
  35. 35.Що поверне Parameters<(a: string, b?: number) => void>?
  36. 36.Як указати тип this для функції-обробника?
  37. 37.Як краще типізувати відповідь API, якщо в різних статусів різна структура?
  38. 38.Що робить утиліта ReadonlyArray<T> (або readonly T[])?
  39. 39.Що таке unique symbol?
  40. 40.Як розширити тип глобального об'єкта Window з модуля?
  41. 41.Як безпечно типізувати результат JSON.parse?
  42. 42.Чим type A = B відрізняється від interface A extends B {} для відображення в підказках IDE?
  43. 43.Що дає paths у tsconfig.json?
  44. 44.Чим moduleResolution: 'bundler' відрізняється від 'node16'/'nodenext'?
  45. 45.Що робить прапорець isolatedModules?
  46. 46.Що робить keyof typeof obj?
  47. 47.Коли TS розширює літеральний тип до загального (widening)?
  48. 48.Як зробити параметр дженерика необов'язковим зі значенням за замовчуванням?
  49. 49.Як типізувати функцію-фабрику, що повертає той самий тип, який отримала?
  50. 50.Що таке контекстна типізація (contextual typing)?
  51. 51.Чому Omit<Circle | Square, 'id'> втрачає дискриміноване об'єднання?
  52. 52.Що дає as const satisfies Record<string, Route> для об'єкта конфігурації?
  53. 53.Коли параметр-об'єднання кращий за перевантаження?
  54. 54.Що таке parameter properties і чому це не «стираний» синтаксис?
  55. 55.Від чого захищають ключове слово override і noImplicitOverride?
  56. 56.Чому Readonly<Settings> може не запобігти такій зміні?
  57. 57.Як отримати TypeScript-тип зі схеми Zod?
  58. 58.Що додає type-aware лінтинг typescript-eslint поверх tsc?
  59. 59.Як поділити одну строгу базову конфігурацію між багатьма пакетами?
  60. 60.Чим відрізняються target і lib у tsconfig.json?
  61. 61.Що виправляє esModuleInterop?
  62. 62.Яка опція дає змогу import config from './config.json' з типізованим вмістом?
  63. 63.Як отримати тип екземпляра й аргументи конструктора класу?
  64. 64.Як звузити результати Promise.allSettled?
  65. 65.Що дозволяють вбудовані типи Uppercase, Capitalize тощо?
  66. 66.Що ловлять noImplicitReturns і noFallthroughCasesInSwitch?
  67. 67.Як типізувати функцію-генератор?
  68. 68.Як типізувати узагальнений хук завантаження даних?
  69. 69.Коли Map<K, V> кращий за об'єкт з індексною сигнатурою?
  70. 70.Що роблять types/typesVersions і умова "types" в exports файлу package.json?
  71. 71.Що робить export type * from './types' (TS 5.0+)?
  72. 72.Як описати тип для будь-якого JSON-значення?
  73. 73.Як реалізувати типобезпечний event emitter?
  74. 74.Чи працює звуження, якщо дискриміноване об'єднання спершу деструктуровано?
  75. 75.Що дає звуження в switch (true) (TS 5.3)?