0Pricing
TypeScript Academy · Урок

Основы шаблона Builder

Конструируйте сложные объекты шаг за шагом

«Основы шаблона Builder» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Зачем нужен построитель

Некоторым объектам требуется много полей, и их создание с помощью огромного конструктора с позиционными аргументами часто приводит к ошибкам. Паттерн построителя создаёт сложный объект пошагово, одним именованным вызовом за раз.

Нужный нам объект

Представьте HTTP-запрос с url, method, headers и body. Передавать всё это в один конструктор трудно для чтения. Построитель позволяет задавать каждую часть с помощью метода с понятным именем.

interface HttpRequest {
  url: string;
  method: string;
  headers: Record<string, string>;
  body?: string;
}

Базовый класс построителя

Построитель хранит внутри частично сформированное состояние и предоставляет методы-сеттеры. Каждый сеттер изменяет внутреннее состояние и отвечает за одно поле.

class RequestBuilder {
  private url = "";
  private method = "GET";
  private headers: Record<string, string> = {};
  private body?: string;
}

Цепочка методов возвращает this

Секрет удобного и плавного чтения построителей — возврат this из каждого сеттера. Поскольку каждый метод возвращает тот же построитель, вызовы можно объединять в цепочку.

class RequestBuilder {
  private url = "";
  setUrl(u: string): this {
    this.url = u;
    return this;
  }
}

Добавление новых шагов

Каждый шаг настройки следует одной схеме: сохраните значение, затем верните this. Обратите внимание: возвращаемый тип this сохраняет конкретный тип построителя во всей цепочке.

  setMethod(m: string): this {
    this.method = m;
    return this;
  }
  addHeader(k: string, v: string): this {
    this.headers[k] = v;
    return this;
  }

Метод build()

Наконец, метод build() собирает накопленное состояние в готовый объект. Это единственный метод, который не возвращает построитель.

  build(): HttpRequest {
    return {
      url: this.url,
      method: this.method,
      headers: this.headers,
      body: this.body,
    };
  }

Использование построителя

Теперь создание объекта читается как предложение. Каждый шаг назван, порядок действий гибок, и Вам не приходится управлять позиционными аргументами.

const req = new RequestBuilder()
  .setUrl("https://api.test")
  .setMethod("POST")
  .addHeader("Accept", "application/json")
  .build();
console.log(req.method);

Полный исполняемый пример

Вот самодостаточная версия, которую можно запустить. Построитель накапливает состояние, а build() создаёт итоговый объект, выглядящий неизменяемым.

interface Req { url: string; method: string }
class B {
  private url = ""; private method = "GET";
  setUrl(u: string): this { this.url = u; return this; }
  setMethod(m: string): this { this.method = m; return this; }
  build(): Req { return { url: this.url, method: this.method }; }
}
const r = new B().setUrl("/users").setMethod("POST").build();
console.log(r.url, r.method);

Значения по умолчанию — бесплатно

Поскольку построитель инициализирует поля разумными значениями по умолчанию, вызывающим сторонам нужно переопределять только необходимые поля. Пропущенные шаги просто сохраняют значения по умолчанию.

const getReq = new B().setUrl("/health").build();
console.log(getReq.method); // GET (default)

Удобство чтения и конструкторы

Сравните new Req("/x", "POST", {}, undefined) с цепочкой построителя. Версия с построителем на каждом шаге объясняет намерение и избавляет от непонятных заполнителей undefined.

Когда стоит его использовать

Используйте построитель, когда у объекта много необязательных частей, создание выполняется поэтапно или Вам нужен понятный API, документирующий себя сам. Для двух или трёх полей проще использовать обычный литерал объекта.

Быстрая проверка

Быстрая проверка по этому уроку.

Повторение

Сборщик создаёт сложные объекты шаг за шагом. Каждый метод установки сохраняет одно поле и возвращает this, чтобы обеспечить цепочку вызовов, а build() собирает итоговый объект. Сборщики особенно полезны, когда у объектов много необязательных частей.

Часто задаваемые вопросы

Урок «Основы шаблона Builder» бесплатный?

Да — полный текст урока «Основы шаблона Builder» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Основы шаблона Builder»?

Конструируйте сложные объекты шаг за шагом Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Основы шаблона Builder»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы шаблона Builder
  2. Плавные интерфейсы с типами
  3. Обязательные этапы
  4. Неизменяемые Builder-объекты
← Назад к TypeScript Academy