Рубрики
Без рубрики

Принуждение требуемых аргументов функций в es6 javascript

Хороший трюк с аргументом по умолчанию в ES6 для обработки отсутствующих необходимых аргументов.

Автор оригинала: Aaron Hanson.

Без ES6:

До ES6 разработчиков JavaScript пришлось сделать некоторую ручную явную кодировку для обработки аргументов недостающей функции. Например, функция с двумя аргументами, которые строго требуются, могут быть написаны так:

function foo (ham, eggs) {
  if (!ham) throw new Error("ham is a required argument");
  if (!eggs) throw new Error("eggs is a required argument");
  
  // Perform function logic
}

С ES6:

Теперь, с появлением ES6, мы можем использовать значения аргументов по умолчанию, чтобы сделать это немного очистить и конденсироваться:

function foo (ham = isRequired("ham"), eggs = isRequired("eggs")) {
  // Perform function logic
}

function isRequired (argumentName) {
  throw new Error(`${argumentName} is a required argument.`);
}

Поскольку выражения значения аргумента по умолчанию выполняются только при необходимости (то есть аргумент отсутствует или undefined ), мы можем использовать такой шаблон для абстрагирования необходимого аргумента. Супер чистый! Вот результат:

foo();
// Error: ham is a required argument.

foo(undefined);
// Error: ham is a required argument.

foo(null);
// Error: eggs is a required argument.

foo(123, undefined);
// Error: eggs is a required argument.

foo(456, "hold the eggs");
// No errors!