Изучение типов утилит: повышение читаемости и безопасности кода

В современных языках программирования служебные типы играют важную роль в улучшении читаемости, удобства сопровождения и безопасности кода. Эти типы предоставляют абстракции многократного использования и помогают минимизировать дублирование кода. В этой статье мы рассмотрим различные методы реализации типов утилит с примерами кода на популярных языках, таких как TypeScript, Python и JavaScript.

  1. Типы служебных программ TypeScript:
    TypeScript, являющийся статически типизированной расширенной версией JavaScript, предлагает мощные типы служебных программ «из коробки». Вот несколько часто используемых типов утилит:
  • Partial: создает новый тип, в котором все свойства предоставленного типа установлены как необязательные.

    interface User {
    name: string;
    age: number;
    }
    type PartialUser = Partial<User>;
    // PartialUser is equivalent to:
    // {
    //   name?: string;
    //   age?: number;
    // }
  • Pick: создает тип, выбирая указанные свойства из предоставленного типа.

    interface User {
    name: string;
    age: number;
    email: string;
    }
    type UserContact = Pick<User, 'name' | 'email'>;
    // UserContact is equivalent to:
    // {
    //   name: string;
    //   email: string;
    // }
  1. Типы служебных программ Python:
    Python, будучи динамически типизированным языком, не имеет встроенных типов служебных программ, таких как TypeScript. Однако аналогичной функциональности можно добиться, используя аннотации типов и пользовательские классы. Вот пример:
from typing import Optional
class PartialUser:
    def __init__(self, name: Optional[str] = None, age: Optional[int] = None):
        self.name = name
        self.age = age
partial_user = PartialUser(name="John")
# partial_user has the attributes name="John" and age=None
  1. Типы служебных программ JavaScript.
    Хотя в JavaScript нет встроенных типов служебных программ, вы можете использовать такие библиотеки, как lodash, для достижения аналогичных результатов. Вот пример использования метода picklodash:
const _ = require('lodash');
const user = {
  name: 'John',
  age: 25,
  email: 'john@example.com',
};
const userContact = _.pick(user, ['name', 'email']);
// userContact is equivalent to:
// {
//   name: 'John',
//   email: 'john@example.com',
// }

В этой статье мы рассмотрели различные методы реализации типов утилит в TypeScript, Python и JavaScript. Хотя TypeScript предоставляет собственные типы утилит, Python и JavaScript требуют разных подходов для достижения схожей функциональности. Используя служебные типы, разработчики могут повысить читаемость, удобство обслуживания и безопасность кода за счет сокращения дублирования кода и улучшения аннотаций типов.