亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Typescript 中處理等待獲取的對象

如何在 Typescript 中處理等待獲取的對象

慕雪6442864 2023-03-24 14:21:14
我正在從 javascript 轉向 typescript,這是我多次遇到的錯誤:在一個組件中,我正在等待獲取以返回一個對象,直到那個時候,該組件才返回 null。如果對象在那里,我將渲染對象的一些屬性:const Component = () => {  const [user, setUser] = useState(null)  useEffect(() => {    getUser().then(setUser)  }, [getUser])  if (!user) return null  return (    <ul>      <li>{`Username: ${user.userName}`}</li>      <li>{`Email: ${user.email}`}</li>    </ul>  )}打字稿然后拋出一個錯誤Object is possibly 'null'.  TS2531對于更一般的情況,這個問題在這里已經有了答案: How to suppress "error TS2533: Object is possibly 'null' or 'undefined'"?但是,確保對象永遠不會為 null 感覺不對。我的意思是,我可以初始化對象;const [user, setUser] = useState({ userName: 'UNKNOWN', email: 'UNKNOWN' })但這顯然也不是我的最佳解決方案。我很失望打字稿無法識別用戶在到達 JSX 時永遠不能為 null。但這可能是因為我正在考慮天真的方式。仍然是問題 -我如何處理打字稿組件中的這種典型情況?
查看完整描述

1 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

這里的問題是你沒有告訴 TypeScript,什么類型可以有狀態user。要修復它,只需定義一個類型User并在中指定useState:


type User = {

  userName: string;

  email: string;

};


const [user, setUser] = React.useState<User | null>(null);


查看完整回答
反對 回復 2023-03-24
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號