Перейти до вмісту
    TypeScript / TypeScript Pick, Omit, Partial: Зменшення Дублювання Типів

    TypeScript Pick, Omit, Partial: Зменшення Дублювання Типів

    Оцініть цю публікацію!
    [Усього: 0 Середнє значення: 0]

    У світі TypeScript, типізація – це наше все. Але іноді, працюючи з великими типами, починаєш стикатися з проблемою дублювання коду. Це не тільки ускладнює підтримку, але й збільшує ймовірність помилок. У цій статті ми розглянемо, як utility types `Pick`, `Omit` та `Partial` допоможуть вам зменшити це дублювання та зробити ваш код чистішим і безпечнішим. Ви навчитесь ефективно маніпулювати типами, щоб отримати саме те, що потрібно.

    Контекст і чому це важливо

    Уявіть собі, що у вас є великий тип `User`, який містить інформацію про користувача: ім’я, прізвище, email, адресу, банківські реквізити та багато іншого. Іноді вам потрібно працювати лише з частиною цього типу, наприклад, тільки з ім’ям та прізвищем для відображення на сторінці профілю. Без використання utility types, вам доведеться копіювати визначення цих властивостей в новий тип, що призводить до дублювання коду та проблем з підтримкою. З часом, зміни у вихідному типі можуть не бути відображені в копіях, що призводить до непередбачуваної поведінки. В реальних проєктах, це може призвести до складних debug-сесій та затримки релізів.

    Практична реалізація

    Utility types `Pick`, `Omit` та `Partial` надають нам зручний спосіб маніпулювати типами. `Pick` дозволяє витягнути певні властивості з існуючого типу, `Omit` навпаки, видаляє вказані властивості, а `Partial` робить всі властивості типу опціональними. Ми розглянемо кожен з них на конкретних прикладах, щоб ви могли одразу почати використовувати їх у своєму коді.

    
    interface User {
      firstName: string;
      lastName: string;
      email: string;
      address: string;
      bankDetails: {
        accountNumber: string;
        bankName: string;
      };
    }
    
    // Витягуємо тільки ім'я та прізвище
    type Profile = Pick;
    
    // Видаляємо email та bankDetails
    type WithoutSensitiveData = Omit;
    
    // Робимо всі властивості User опціональними
    type OptionalUser = Partial;
    
    // Приклад використання
    const userProfile: Profile = {
      firstName: 'John',
      lastName: 'Doe',
    };
    
    const userWithoutSensitiveData: WithoutSensitiveData = {
      firstName: 'John',
      lastName: 'Doe',
      address: 'Some Address',
    };
    
    const optionalUser: OptionalUser = {
      firstName: 'John'
    };
    

    У цьому прикладі `Profile` тепер містить тільки `firstName` та `lastName` з типу `User`. `WithoutSensitiveData` містить всі властивості `User`, крім `email` та `bankDetails`. `OptionalUser` дозволяє створити об’єкт користувача, не заповнюючи всі поля, що корисно, наприклад, при створенні нових користувачів. Це значно скорочує кількість коду та робить його більш читабельним.

    Поширені помилки та підводні камені

    • Неправильний вибір властивостей: Якщо ви вкажете неіснуючу властивість в `Pick` або `Omit`, TypeScript не видасть помилку на етапі компіляції, але тип буде містити `never`. Це може призвести до непередбачуваної поведінки під час виконання. Переконайтеся, що властивості, які ви використовуєте, існують у вихідному типі.
      • Сумісність з існуючими типами: При використанні `Pick` або `Omit`, переконайтеся, що тип, який ви створюєте, сумісний з існуючими типами, з якими ви будете працювати. Несумісність може призвести до помилок під час присвоєння або передачі даних.
    • Уникайте надмірного використання: Хоча utility types дуже корисні, не зловживайте ними. Іноді, простіше створити новий тип вручну, особливо якщо вам потрібно об’єднати кілька utility types або додати додаткову логіку.

    Порівняння підходів

    Раніше, для отримання частини типу, розробники часто копіювали визначення властивостей вручну. Це було громіздко, схильне до помилок та важко підтримувати. Utility types `Pick`, `Omit` та `Partial` пропонують більш елегантне та безпечне рішення. Хоча створення нового типу вручну може бути простішим у простих випадках, utility types забезпечують кращу підтримку та зменшують ризик помилок у великих проєктах.

    Висновки

    Utility types `Pick`, `Omit` та `Partial` – це потужні інструменти для маніпулювання типами в TypeScript. Вони дозволяють зменшити дублювання коду, покращити читабельність та підвищити безпеку. Спробуйте використовувати їх у вашому наступному проєкті, щоб переконатися у їхній ефективності. Право зараз, перегляньте свої існуючі типи та подумайте, де ви могли б застосувати ці utility types для покращення якості коду.

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *