簡體   English   中英

typescript 使用預設值作為數組 object 中的屬性值錯誤?

[英]typescript use preset value for property value in array object error?

我有這個簡單的 typescript 代碼用於反應

type fruitCode = 'apple' | 'banana'

interface fruitList {
  name: fruitCode
}

const [arr, setArr] = useState<fruitList[] | []>([])

useEffect(() => {
  const arrList = [{
    name: 'apple'
  }, {
    name: 'banana'
  }];

  //error?
  setArr(arrList)
}, [])

演示https://codesandbox.io/s/react-typescript-forked-gi6fw?file=/src/App.tsx:103-391

如何限制我的財產價值是“蘋果”和“香蕉”?

Typescript 無法推斷arrList的類型所以直接設置

const arrList: fruitList[] = [
  // ...
]

我也會刪除| [] | []來自 state 類型定義,只是沒有意義

const [arr, setArr] = useState<fruitList[]>([])

空數組仍然滿足fruitList[]要求。

最后,你的接口和類型不應該是組件的一部分。 將它們移到App上方

type fruitCode = "apple" | "banana";
interface fruitList {
  name: fruitCode;
}

export default function App() {
  // ...
}

您會注意到在此之后沒有關於您的useEffect依賴項的警告。

編輯 React Typescript(分叉)

暫無
暫無

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

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