Можно ли в TypeScript вернуть, определено ли значение (т.е. не undefined) таким образом, чтобы транспилятор понимал, что оно не является неопределенным?
Чтобы прояснить мой вопрос, изобразите этот пример :
let myVar: MyClass | undefined = /*something*/
if(myVar) {
myVar.foo() // this always works, because the transpiler knows that myVar will never be undefined
}
Однако представьте, что myVar
необходимо инициализировать перед вызовом foo()
. Таким образом, оператор if
становится if(myVar && myVar.isInitialized())
. Но поскольку эта проверка должна выполняться во многих функциях, я написал функцию isUsable()
:
function isUsable(myVar: MyClass | undefined): boolean {
return myVar && myVar.isInitialized();
}
let myVar: MyClass | undefined = /*something*/
if(isUsable(myVar)) {
myVar.foo() // this does not work, because myVar may be undefined. I would have to use myVar?.foo() or myVar!.foo() which I want to avoid
}
Можно ли определить isUsable()
таким образом, чтобы транспилятор понимал, что myVar
не может быть неопределенным в if
-блоке?