簡體   English   中英

Object 在 TypeScript 中驗證后可能是“未定義”

[英]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 ,設置bodynullable ,問題不是來自您的validator function。 如果需要bodylegs ,請設置這些是必需的。

interface IAnimal {
  type?: "animal" | "bird";
  body: { // remove nullable mark
    legs: number; // ...
  };
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM