Ответ 1
Вы можете просто проверить значение, чтобы увидеть, если он undefined:
var fn = function(a, b) {
console.log(a, b === undefined);
};
fn(1);
fn(2, undefined);
fn(3, null);
Дана функция с необязательными параметрами:
function DoSomething(a, b?) {
/** Implementation */
}
Как определить, был ли необязательный параметр предоставлен внутри тела функции? В настоящее время лучший способ сделать это, о чем я могу подумать, это:
typeof b === 'undefined'
Но это немного грязно и не так просто для чтения. Поскольку TypeScript обеспечивает поддержку необязательных параметров, я надеюсь, что он также имеет интуитивно понятный способ проверить, был ли предоставлен параметр.
Как показывает приведенный выше пример, я не возражаю против того, был ли необязательный параметр явно установлен на undefined
или не указан вообще.
К сожалению, этот вопрос был не так ясен, как следовало бы, особенно если он читал. Он предназначен для того, чтобы точно проверить, полностью ли опущен необязательный параметр, например:
DoSomething("some value");
Я принял ответ эвана, поскольку его решение (b === undefined
) чище, чем решение в моем вопросе (typeof b === 'undefined'
), и при этом все еще ведет себя так же.
Другие ответы определенно полезны, и какой ответ является правильным для вас, зависит от вашего варианта использования.
Вы можете просто проверить значение, чтобы увидеть, если он undefined:
var fn = function(a, b) {
console.log(a, b === undefined);
};
fn(1);
fn(2, undefined);
fn(3, null);
После поиска в googling typescript проверьте undefined ", я увидел этот вопрос в верхней части результатов, но ответ, данный Эван Тримболи, не решил мою проблему.
Вот ответ , который в конечном итоге решил мою проблему. Следующий код - это то, на чем я остановился. Он должен работать в случаях, когда значение равно null
или undefined
:
function DoSomething(a, b?) {
if (b == null) doSomething();
}
TypeScript util
модуль имеет функцию isUndefined()
. Вы можете использовать его так.
import {isUndefined} from "util";
class A {
test(b?: string): string {
if (isUndefined(b)) {
return "UNDEFINED";
} else {
return ("DEFINED" + b);
}
}
}
вы можете просто добавить необязательный параметр со значением по умолчанию, подобным этому
function DoSomething(a, b: boolean=null) {
if(b == null)
{
//parameter was not set
}
else
{
//parameter is true or false...no other option available
}
}
С здесь работает без проблем:
function getSchool(name: string, address?: string, pinCode?: string): string {
if (typeof address === 'undefined') {
console.log('address not defined');
}
if (typeof pinCode === 'undefined') {
console.log('pincode not defined');
}
//...
}