TypeScript Academy · Урок

Необязательные параметры и параметры по умолчанию

Обрабатывайте отсутствующие аргументы с помощью ? и значений по умолчанию

Урок 2 из 413 шагов

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

Добро пожаловать

TypeScript позволяет помечать параметры функций как необязательные с помощью `?` или задавать им значения по умолчанию. Это делает интерфейсы гибкими, сохраняя безопасность типов.

Необязательные параметры с помощью ?

Добавьте `?` после имени параметра, чтобы сделать его необязательным. Внутри функции тип параметра становится T | undefined.
function greet(name: string, greeting?: string): string {
  return (greeting ?? 'Hello') + ', ' + name;
}

Значения параметров по умолчанию

Присвойте значение по умолчанию с помощью `=`. TypeScript выводит тип из значения по умолчанию, а при вызове функция считает параметр необязательным.
function greet(name: string, greeting: string = 'Hello'): string {
  return greeting + ', ' + name;
}
greet('Alice');         // 'Hello, Alice'
greet('Bob', 'Hi');    // 'Hi, Bob'

Необязательные параметры и параметры по умолчанию

Необязательный параметр `?` получает значение undefined, если его не указать. Значение по умолчанию заменяет undefined резервным значением. В обоих случаях параметр не требуется указывать при вызове.
function opt(x?: number) { return x; }     // x: number | undefined
function def(x: number = 0) { return x; }  // x: number

Правила размещения

Необязательные параметры и параметры со значениями по умолчанию должны следовать после обязательных параметров в сигнатуре функции.
// Correct order
function create(name: string, role: string = 'user', active?: boolean) {}

// Error: required after optional
// function bad(x?: string, y: string) {}

Явная передача undefined

Можно передать `undefined` параметру со значением по умолчанию, чтобы активировать это значение.
function log(msg: string, level: string = 'info') { console.log(level, msg); }
log('test', undefined); // level is 'info'

Необязательные параметры и перегрузки

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

Параметры-объекты по умолчанию

Параметр-объект можно деструктурировать, задав значения по умолчанию для каждого свойства.
function connect({ host = 'localhost', port = 5432 } = {}) {
  return `${host}:${port}`;
}

Параметры-массивы по умолчанию

Параметры-массивы со значениями по умолчанию работают так же. Укажите пустой массив по умолчанию, чтобы не проверять значение на undefined.
function joinAll(parts: string[], sep: string = ', '): string {
  return parts.join(sep);
}

Необязательная цепочка в местах вызова

Если сама ссылка на функцию необязательна, используйте необязательную цепочку `?.()`, чтобы вызывать её только при наличии.
interface Config { onReady?: () => void; }
function init(config: Config) {
  config.onReady?.();
}

Тип необязательных параметров внутри функции

Внутри функции необязательный параметр `x?: T` имеет тип `T | undefined`. Перед использованием в качестве T его необходимо сузить.
function process(id?: number) {
  if (id === undefined) return;
  console.log(id * 2); // id is number here
}

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

Каков тип параметра, объявленного как `count?: number`, внутри тела функции?

Итоги

Используйте `?` для необязательных параметров и `= value` для значений по умолчанию. Внутри функции необязательные параметры имеют тип T | undefined. Значения по умолчанию автоматически заменяют undefined. Оба вида параметров должны следовать после обязательных.
Можно начать бесплатно

Изучай TypeScript с ИИ-репетитором — бесплатно

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

Курсы
101
Уроки
352

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

Урок «Необязательные параметры и параметры по умолчанию» бесплатный?

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

Чему я научусь в уроке «Необязательные параметры и параметры по умолчанию»?

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

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

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

Сколько времени занимает урок «Необязательные параметры и параметры по умолчанию»?

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

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

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

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

  1. Аннотации типов параметров и возвращаемых значений
  2. Необязательные параметры и параметры по умолчанию
  3. Остаточные параметры и оператор разворота с типами
  4. void, never и сигнатуры функций
← Назад к TypeScript Academy