Если допустимы все возможные значения int
(т.е. вы не можете указать -1 как специальное значение «не указано»), то вы не сможете использовать тип данных int
.
Мое предложение таково (основываясь на ответе Лорана):
Определите тип как Number=NaN
и проверьте его существование с помощью isNaN()
.
Если пользователь указал значение, преобразуйте его в int
, в противном случае присвойте ему значение по умолчанию.
function margin(top:Number, right:Number = NaN, bottom:Number = NaN, left:Number = NaN) {
// Then here test with isNaN(right), isNaN(bottom), etc.
if (isNaN(right))
{
right = DEFAULT_MARGIN; // some default value.
// Any other logic here...
}
else
{
// Enforce integer values.
right = int(right); // or use Math.floor(right);
}
}
Вы также можете использовать троичный оператор, чтобы уменьшить количество строк:
function margin(top:Number, right:Number = NaN, bottom:Number = NaN, left:Number = NaN) {
// Then here test with isNaN(right), isNaN(bottom), etc.
// This is equivalent to the example above:
right = isNaN(right) ? DEFAULT_MARGIN : int(right);
}