TypeScript — це розширення JavaScript з типами, яке допомагає робити код більш надійним і передбачуваним. Якщо ви готуєтесь до співбесіди на позицію фронтенд або fullstack розробника, знання TypeScript часто є обов’язковим. Цей список із 50 основних питань і коротких експертних відповідей допоможе швидко освіжити знання та підготуватись до розмови з роботодавцем.
1. Що таке TypeScript?
TypeScript — це надбудова над JavaScript, яка додає статичну типізацію, інтерфейси та сучасні можливості ECMAScript.
2. Чим TypeScript відрізняється від JavaScript?
TypeScript додає типи та компілюється у чистий JavaScript. Це дозволяє виявляти помилки ще на етапі компіляції.
3. Що таке типи у TypeScript?
Типи визначають, які значення може приймати змінна або функція, наприклад: number, string, boolean, any, unknown.
4. Що таке інтерфейси (interface)?
Interface описує структуру об’єкта: які властивості та методи він має мати.
5. Що таке типи (type)?
Type — альтернативний спосіб описати структуру або об’єднання типів. Type можна комбінувати та розширювати.
6. Що таке any?
Тип any дозволяє змінній приймати будь-яке значення, але його використання знижує безпеку коду.
7. Що таке unknown?
Unknown — безпечніший аналог any, потрібно перевіряти тип перед використанням.
8. Що таке enum?
Enum — перелік можливих значень, який дозволяє робити код читабельнішим та контрольованим.
9. Що таке tuple?
Tuple — масив з фіксованою кількістю елементів різних типів.
10. Як працюють generics?
Generics дозволяють створювати компоненти або функції, які працюють із різними типами, зберігаючи їх безпеку.
11. Що таке type assertion?
Type assertion дозволяє явно вказати TypeScript, який тип має змінна (as або <Type>).
12. Що таке union type?
Union type дозволяє змінній мати кілька типів: string | number.
13. Що таке intersection type?
Intersection type об’єднує декілька типів у один (TypeA & TypeB).
14. Як описати функцію у TypeScript?
function add(a: number, b: number): number {
return a + b;
}
15. Що таке optional property?
Властивість, яка може бути відсутня, позначається знаком ?:
interface User { name: string; age?: number; }
16. Що таке readonly property?
Readonly властивість не може бути змінена після створення об’єкта.
17. Що таке keyof?
Оператор, що отримує ключі об’єкта як тип: keyof User → "name" | "age".
18. Що таке mapped types?
Mapped types дозволяють створювати нові типи на основі існуючих об’єктів.
19. Що таке conditional types?
Типи, які змінюються залежно від умови:
type Check<T> = T extends string ? 'yes' : 'no';
20. Що таке never?
Never означає значення, яке ніколи не трапляється, наприклад для функцій, які завжди кидають помилку.
21. Що таке unknown vs any?
Any дозволяє робити все без перевірок, unknown вимагає перевірки типу перед використанням.
22. Що таке type guards?
Type guards — перевірки типу для безпечної роботи з union types.
23. Що таке interface merging?
TypeScript дозволяє об’єднувати декілька визначень одного інтерфейсу в один.
24. Що таке declaration file?
Файл .d.ts описує типи для бібліотек, які не написані на TypeScript.
25. Що таке ambient declarations?
Оголошення змінних або модулів, які визначаються поза кодом, наприклад глобальні бібліотеки.
26. Як працює strict mode?
Увімкнення strict забезпечує сувору перевірку типів для більшої безпеки коду.
27. Що таке interface vs type?
Interface краще для об’єктів та розширення, type для об’єднань, примітивів та складних типів.
28. Що таке readonly array?
Масив, елементи якого не можна змінювати: readonly number[].
29. Що таке Partial<T>?
Mapped type, який робить усі властивості об’єкта опціональними.
30. Що таке Required<T>?
Mapped type, який робить усі властивості об’єкта обов’язковими.
31. Що таке Pick<T, K>?
Створює новий тип з підмножини властивостей об’єкта.
32. Що таке Omit<T, K>?
Створює новий тип, виключаючи певні властивості.
33. Що таке Record<K, T>?
Створює об’єкт з ключами K і значеннями T.
34. Як типізувати функцію, яка повертає Promise?
function fetchData(): Promise<string> { … }
35. Що таке unknown vs void?
Void — функція нічого не повертає, unknown — значення з невідомим типом.
36. Що таке module augmentation?
Дозволяє додавати або розширювати типи у сторонніх модулях.
37. Що таке enum const?const enum компілюється у числові значення без створення об’єкта enum.
38. Що таке template literal types?
Типи, які використовують шаблонні рядки для створення нових типів.
39. Що таке type inference?
TypeScript автоматично визначає тип змінної на основі її значення.
40. Що таке never vs void?
Void — функція нічого не повертає, never — функція не завершується нормально або кидає помилку.
41. Як працюють default type parameters?
Дозволяють задавати тип за замовчуванням у generic:
function wrap<T = string>(value: T) { … }
42. Що таке tuple vs array?
Tuple — фіксовані типи для кожного елемента, array — один тип для всіх елементів.
43. Що таке type compatibility?
TypeScript перевіряє, чи можна присвоїти значення одного типу змінній іншого типу.
44. Що таке keyof typeof?
Поєднання, щоб отримати тип ключів об’єкта у TypeScript.
45. Що таке branded types?
Типи з “маркою”, які допомагають уникати помилок при присвоєнні схожих типів.
46. Що таке discriminated unions?
Union типи з властивістю “тип-дискримінатором” для безпечного вибору варіанта.
47. Що таке ambient module?
Файл, що описує модуль без реального коду, наприклад для сторонньої JS-бібліотеки.
48. Що таке non-null assertion (!)?
Оператор, що повідомляє компілятору, що значення не null або undefined.
49. Що таке assert functions?
Функції для явної перевірки типів, що допомагають компілятору точно визначати тип.
50. Як працює strictNullChecks?
Опція, яка забороняє присвоєння null або undefined змінним без відповідного типу.
Ці 50 питань охоплюють основні теми для співбесід TypeScript: типізацію, інтерфейси, generics, union/intersection типи та роботу з сучасними можливостями мови.
Важливо не лише знати синтаксис, а й розуміти принципи статичної типізації, безпечної роботи з даними та оптимізації коду. Регулярна практика і реальні приклади допоможуть впевнено відповідати на питання та писати більш надійний код.


