类型“never[]”.ts(2339) 上不存在属性“level”,但它确实记录了

问题描述

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

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 (

解决方法

就这样写

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