Дана функция с необязательными параметрами:
function DoSomething(a, b?) {
/** Implementation */
}
Как определить, был ли необязательный параметр предоставлен внутри тела функции? В настоящее время лучший способ сделать это, о чем я могу подумать, это:
typeof b === 'undefined'
Но это немного грязно и не так просто для чтения. Поскольку TypeScript обеспечивает поддержку необязательных параметров, я надеюсь, что он также имеет интуитивно понятный способ проверить, был ли предоставлен параметр.
Как показывает приведенный выше пример, я не возражаю против того, был ли необязательный параметр явно установлен на undefined
или не указан вообще.
Изменить
К сожалению, этот вопрос был не так ясен, как следовало бы, особенно если он читал. Он предназначен для того, чтобы точно проверить, полностью ли опущен необязательный параметр, например:
DoSomething("some value");
Я принял ответ эвана, поскольку его решение (b === undefined
) чище, чем решение в моем вопросе (typeof b === 'undefined'
), и при этом все еще ведет себя так же.
Другие ответы определенно полезны, и какой ответ является правильным для вас, зависит от вашего варианта использования.