摆脱“未定义”打字稿错误,React

时间:2020-03-31 20:22:08

标签: reactjs typescript undefined

我是TypeScript配置的新手,但是我昨天进行了编码,并使用if检查usersData是否使“ Object is undefined”错误消失了,从而包装了代码块。现在,我今天加载了代码,我有红色的花键 无处不在 ,我做了什么,有什么变化?这不是处理未定义的正确方法吗?问题是我的React应用程序仍然可以运行,但是我的VSCode充满了错误,而不是警告,所以我以为这可能是我的VSCode出错了?

感谢您的帮助,谢谢!

ts.config

{ "extends": "./paths.json", "compilerOptions": { "target": "es5", "lib": [ "dom", "dom.iterable", "esnext" ], "allowJs": true, "skipLibCheck": true, "sourceMap": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "strict": true, "forceConsistentCasingInFileNames": true, "module": "esnext", "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, "jsx": "react" }, "include": [ "src", "typings/fonts.d.ts" ] }

错误

if (usersResponse) { let finalData = usersResponse.map((singleUser: any) => { return ( { label: '${singleUser.PreferredLastName}, ${singleUser.PreferredFirstName}', id: singleUser.UserID } ); }); setUsersData(finalData); }

Error in Color

1 个答案:

答案 0 :(得分:0)

您共享的代码不足,无法正确确定(下一步,请发布完整的文件或包含错误的复制代码段),但我认为打字稿不符合usersResponse的定义,但可能是与不可迭代的实例不同。

让我们假设你有这个:

const userResponse = 'text'

const convertUserData = () => {
  if (userResponse) {
    userResponse.map(() => ...)
  }
}

您将遇到错误,因为userResponse不是数组,因此您需要正确输入userResponse作为“项目数组”或将防护范围扩展到

if (userResponse && Array.isArray(userResponse)) {
  ...
}