【问题标题】:Property 'level' does not exist on type 'never[]'.ts(2339) but it does log类型“never[]”.ts(2339) 上不存在属性“级别”,但它确实记录了
【发布时间】:2021-09-25 06:29:34
【问题描述】:

我不确定为什么这会给我一个错误我知道我应该做一些事情,但我不知道该怎么告诉它不要给我一个错误。如果我运行它,它会给我一个错误,但它实际上仍然有效,因此该值确实会登录到控制台。

const Tab1: React.FC = () => {
  const [lockdownData, setLockdownData] = useState();
  
  useEffect(() => {
    let finalLockdownData: any;
    var getLockdownData = async () => {
      await firestoreDB.collection("LockdownStatus").doc("lockdownData").get().then((doc) => {
        finalLockdownData = doc.data();
      });
      setLockdownData(finalLockdownData);
    };
    getLockdownData();
  }, []);
  
  console.log('Position 1')
  console.log(lockdownData?.level) //ERROR: Property 'level' does not exist on type 'never[]'.ts(2339)
  console.log('Position 2')

  return (

【问题讨论】:

    标签: reactjs typescript ionic2


    【解决方案1】:

    就这样写吧

    const [lockdownData, setLockdownData] = useState<any[]>([])
    

    编辑 1

    if (lockdownData === null) {
        console.log('data is nullable');
    } else {
        console.log(lockdownData!.level);
    }
    

    编辑 2

    const [lockdownData, setLockdownData] = useState<Record<string, never>>({});
    

    代码沙盒:https://codesandbox.io/s/dreamy-water-v0vwb?file=/src/App.tsx:108-184

    【讨论】:

    • 这不起作用,但是,无论如何,[] 不应该在那里,对此感到抱歉
    • 仍然给出同样的错误Property 'level' does not exist on type 'any[]'
    • 如果我将 useState() 设为空白,它会显示 Property 'level' does not exist on type 'never'
    • 为什么要将初始状态设置为空白?你正在使用打字稿
    • 我不想将其设置为空白,但我正在等待从 Firestore 数据库中获取数据,然后一旦检索到数据,我就可以对其进行操作
    猜你喜欢
    • 2022-10-04
    • 2021-01-10
    • 2021-12-11
    • 2019-08-11
    • 2021-08-02
    • 2020-06-02
    • 2022-07-09
    • 2023-02-07
    • 2020-08-23
    相关资源
    最近更新 更多