Devs Hive
Повернутися до всіх запитань

Що таке Generics в TypeScript?

Junior/Middle/SeniorTypeScript
Зустрічали на інтервʼю:2 користувачів

Generics - це спосіб забезпечити повторне використання коду через узагальнення типів. Якщо в вас є компонент системи(клас, функція, інтерфейс…), який працює з одним типом, то Generics дозволяють йому працювати з декількома типами.

Розберемо приклад

Ми розробляємо REST API і хочемо уніфікувати відповіді від бекенду додавши дані в обʼєкт data. Так як в нас багато сутностей, для кожної з них ми будемо дублювати інтерфейси. А якщо ми захочемо змінити error: string на щось інше, наприклад на клас ApiError - це доведеться робити для кожного інтерфейсу окремо.

type TransactionsResponse = {
data: Transaction[];
error: string | null;
}

type ProfileResponse = {
data: Profile;
error: string | null;
}

Якраз цю проблему вирішують Generics. Замість того, щоб дублювати код, ми створюємо один загальний тип і розширюємо його.

// T - можна вважати змінною для типу.

type ApiResponse<T> = {
data: T;
error: string | null;
}

// Через використання Generics ми змогли узагальнити ApiResponse
// і розширити його для кожного окремого типу
const r1: ApiResponse<Transaction[]> = {data: []}
const r2: ApiResponse<Profile> = {data: { name: 'Alex' }}

Теж саме можна робити з класами, інтерфейсами і функціями. Але для розуміння ідеї і проблеми яку вирішують Generics, цього прикладу буде цілком достатньо.

Зустрічав на інтервʼю?

Коментарі (0)

Увійдіть, щоб залишити коментар

Поки що немає коментарів. Будьте першим!