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

#javascript #typescript #syntax

#javascript #typescript #синтаксис

Вопрос:

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

 func(arg1, arg2, options)
 

Для простоты я удалил первые два аргумента в следующем примере. В настоящее время я делаю это так:

 function test({ a = true, b = false }: { a?: boolean, b?: boolean } = { a: true, b: false }) {
    console.log(a, b);
}

// Examples
test();                      // true, false (defaults)
test({ a: false });          // false, false
test({ b: true });           // true, true
test({ a: false, b: true }); // false, true
 

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

Ответ №1:

Инициализатором параметра может быть пустой объект:

 function test({ a = true, b = false }: { a?: boolean, b?: boolean } = {}) {
    console.log(a, b);
}
 

Игровая площадка