即使使用null检查,对象也可能未定义

时间:2020-11-09 12:24:58

标签: javascript reactjs typescript

我正在使用Typescript 4.0.5并无法使用

Object is possibly undefined 

错误

我有一个本地状态,其中包含用户上传的.csv文件

const [currentLine, setCurrentLine] = useState<File>(); 

我的useEffect监视文件更改并解析csv

  useEffect(
   () => {
   currentFile !== null && currentFile !== undefined  && currentFile.type === 'text/csv'
       ? Papa.parse(currentFile, {
           complete: (csv: File) => setParsedFile(csv)
         })
       : null;
   },
   [currentFile]
 );

即使使用null和未定义的检查,我仍然会收到错误消息

 Object is possibly 'undefined'.ts(2532)

我尝试将null / undefined检查包装在if语句中,并得到相同的错误,并且还尝试使用可选链与

currentFile?.type === 'text/csv'

后一个选项似乎将currentFile强制为never,并告诉我.type在never ...上不存在。

我在这里做错什么吗?我们有一个相当混乱的package.json,我想知道是否需要更新某些工具,因为在这里看不到任何错误原因。我在eslint 7.13.0上使用eslint-config-prettier 6.15进行配置。

1 个答案:

答案 0 :(得分:1)

可能是

  const [currentFile, setCurrentFile] = useState<File>(); 

  useEffect(() => {
    if (currentFile && currentFile.type === 'text/csv')
      Papa.parse(currentFile, {
        complete: (csv: File) => setParsedFile(csv)
      });
    },
    [currentFile]
  );