Есть ли какой-либо чистый способ присвоить значения по умолчанию функции, если какой-либо из ее аргументов является ложным.
Я знаю, что вы можете сделать что-то вроде
function addSomething(element, someArr = []) {
someArr.push(element);
}
Но это не обрабатывает, если второй аргумент равен null, и тогда вы получите "не может прочитать свойство" push "нулевого значения.
Я надеялся, что ниже будет работать
function addSomething(element, someArr || []) {
someArr.push(element);
}
....
Так что я оставил выполнение проверки внутри метода?
function addSomething(element, someArr) {
someArr = someArr || [];
someArr.push(element);
// OR
someArr && someArr.push(element);
}
Или есть шаблон, который я пропустил
Ваш код - лучшее, на что вы можете надеяться. null
отличается от массива, поэтому, если вы явно передаете его в свою функцию, он должен:
null
.Я думаю, вы хотите второй случай. С помощью аннотаций TypeScript эта функция может выглядеть так:
function addSomething(element, someArr: any[]|null)
И вам придется явно признать этот факт.
Даже ваш последний подход не на 100% безопасен:
function addSomething(element, someArr) {
someArr && someArr.push(element);
}
addSomething('test', 'foobar');
Вы должны проверить, является ли параметр массивом:
function addSomething(element, someArr) {
Array.isArray(someArr) && someArr.push(element);
}
addSomething('test', 'foobar'); // fails silently
someArr = Array.isArray(someArr) || [];
(я использую методы массива несколько раз в этой функции)
someArr = someArr || []
тогда вы получите ошибкуUse before declaration