Пожалуйста, смотрите следующий код. У нас есть удобный метод для преодоления этого?
interface IAnimal {
type?: "animal" | "bird";
body?: {
legs?: number;
};
}
// validate type and body.legs exists
function validator(animal:IAnimal){
if(!animal || !animal.body|| !animal.body.legs){
throw new Error('invalid');
}
console.log(animal.body.legs); // fine here
}
function foo(animal:IAnimal){
validator(animal); // we called validation here
console.log(animal.body.legs);
// ^^^^^^^^^^^ =========> Error: Object is possibly 'undefined'.ts(2532)
}
Я знаю, что это можно решить с помощью !.
console.log(animal.body!.legs); // fine
Но если это большая функция, нам нужно используйте это !.
во всей функции, даже после правильной проверки, которая выглядит не очень хорошо. Эта ошибка также подвержена. Есть ли удобный способ преодолеть это?