Я хочу создать функцию, которая проверяет, является ли переменная null
или undefined
.
То, что я хочу - это безопасный тип переменной после проверки.
В моем последнем проекте я сделал следующее:
function isDefined<T>(value: T): value is T {
return <T>value !== undefined && <T>value !== null;
}
Но почему-то это не работает в моем текущем проекте, возможно, из-за другого tsconfig - я вижу ряд ошибок, таких как "variable может быть null" после isDefined(foo)
(проекты используют одинаковые версии машинописи - "2.7.2"
)
Я также видел другой подход, который работает, но ... немного странный в терминах или типах.
function isDefined(value: any): value is {} | string | number | boolean {
return value !== undefined && value !== null;
}
Вопрос: Как создать isDefined
, который бы сохранял тип переменной?
UPD1 : Пример использования:
const foo: string | undefined = 'foo';
function getFoo(foo: String): void {
console.log(foo);
}
function getBar(foo: string | undefined) {
if (isDefined(foo)) {
getFoo(foo); // getFoo still think that foo maight be undefined
}
}
export function isDefined<T>(value: T): value is T {
return <T>value !== undefined && <T>value !== null;
}