我是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); }
答案 0 :(得分:0)
您共享的代码不足,无法正确确定(下一步,请发布完整的文件或包含错误的复制代码段),但我认为打字稿不符合usersResponse
的定义,但可能是与不可迭代的实例不同。
让我们假设你有这个:
const userResponse = 'text'
const convertUserData = () => {
if (userResponse) {
userResponse.map(() => ...)
}
}
您将遇到错误,因为userResponse
不是数组,因此您需要正确输入userResponse
作为“项目数组”或将防护范围扩展到
if (userResponse && Array.isArray(userResponse)) {
...
}