TypeScript: типізований JavaScript
TypeScript -- мова від Microsoft, що додає статичну типізацію до JavaScript. Компілюється у звичайний JS та працює скрізь, де працює JavaScript. TypeScript знаходить помилки на етапі розробки, а не в продакшені. Вбудована підтримка в VS Code забезпечує автодоповнення, навігацію та рефакторинг. За опитуванням Stack Overflow, TypeScript входить у топ-5 найулюбленіших мов розробників.
| Тип | Приклад | Опис |
|---|---|---|
| string, number, boolean | let name: string = "JS" | Примітивні типи |
| array | number[] або Array<number> | Типізований масив |
| tuple | [string, number] | Фіксована структура |
| enum | enum Color {Red, Green} | Набір іменованих констант |
| any | let x: any = 42 | Будь-який тип (уникайте) |
| unknown | let x: unknown | Безпечна альтернатива any |
| void / never | (): void, (): never | Немає повернення / недосяжний |
Interface, Type та Union Types
Interface описує структуру об\'єкта: обов\'язкові та опціональні (?) властивості. Type alias створює іменований тип для будь-якої конструкції. Union types (string | number) дозволяють змінній мати один із кількох типів. Intersection types (&) об\'єднують типи. Literal types обмежують значення: type Direction = "up" | "down" | "left" | "right". Type narrowing через typeof, instanceof та in звужує тип у умовних блоках. Опціональний chaining (?.) та nullish coalescing (??) працюють з nullable типами.
Interface vs Type
- interface -- для об\'єктів, розширюється (extends)
- type -- для union, intersection, примітивів
- Interface можна доповнювати (declaration merging)
- На практиці: interface для API, type для утиліт
tsconfig.json
- strict: true -- увімкнути всі перевірки
- target -- версія JS на виході
- module -- система модулів
- noImplicitAny -- заборона неявного any
Generics та Utility Types
Generics створюють гнучкі типи: function identity<T>(arg: T): T працює з будь-яким типом, зберігаючи типову безпеку. Utility types трансформують існуючі типи: Partial<T> робить усі поля опціональними, Required<T> -- обов\'язковими, Pick<T, K> вибирає конкретні поля, Omit<T, K> виключає поля, Record<K, V> створює словник. Mapped types та Conditional types дозволяють створювати складні типові трансформації.
Про тест
Тест «TypeScript основи» містить 20 питань про типи, interface, type, generics, enum, union/intersection, utility types, tsconfig та type narrowing.