[英]Object is possibly 'undefined' after validation in TypeScript
請看下面的代碼。 我們有沒有一種方便的方法來克服這個問題?
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
但是如果這是一個大的 function,我們需要在整個 function 中使用這個..
即使經過適當的驗證,這看起來不太好。 也容易出現這種錯誤。 有什么方便的方法可以克服這個問題嗎?
您的接口IAnimal
,設置body
為nullable
,問題不是來自您的validator
function。 如果需要body
和legs
,請設置這些是必需的。
interface IAnimal {
type?: "animal" | "bird";
body: { // remove nullable mark
legs: number; // ...
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.