React Native 打字稿数字 0 读为 NaN

jac*_*ack 9 typescript reactjs react-native

我正在尝试映射一个数组并使用它的值或键作为我在 React Native (Android) 中返回的数据。\n任何人都可以解释为什么值 0 被读取为 NaN 吗?\n我在使用打字稿枚举。

\n

我正在使用:\ntypescript v.4.7.4、RN 0.69.2 和 React 18

\n

带有控制台输出的简单代码示例:

\n
const R = [...Array(4).keys()];\nR.map((_i, key) => {\n  console.log(_i, key);\n}); \n\n\nOutput: \nNaN NaN  // value 0 is interpreted as NaN ???\n1 1\n2 2\n3 3\n
Run Code Online (Sandbox Code Playgroud)\n

仅当在调试模式下通过 console.log 或 VSCode 检查器直接评估该值时,才会发生这种情况。每当我使用 \xc3\xa0 模板字符串时,该值都会正确显示。

\n
R.forEach(i => {\n  console.log(`value is : ${i} is ${typeof i}`);\n  console.log(i);\n});\n\nOutput: \nvalue is : 0 is number\nNaN\nvalue is : 1 is number\n1\nvalue is : 2 is number\n2\nvalue is : 3 is number\n3\n
Run Code Online (Sandbox Code Playgroud)\n

任何帮助表示赞赏。

\n
output for 'npx react-native info'\n\ninfo Fetching system and libraries information...\nSystem:\n    OS: Windows 10 10.0.22000\n    CPU: (12) x64 Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz\n    Memory: 11.90 GB / 31.92 GB\n  Binaries:\n    Node: 18.6.0 - C:\\Program Files\\nodejs\\node.EXE\n    Yarn: 1.22.15 - C:\\Program Files (x86)\\Yarn\\bin\\yarn.CMD\n    npm: 8.13.2 - C:\\Program Files\\nodejs\\npm.CMD\n    Watchman: Not Found\n  SDKs:\n    Android SDK:\n      API Levels: 31, 33\n      Build Tools: 30.0.3, 33.0.0\n      System Images: android-32 | Google APIs Intel x86 Atom_64, android-33 | Google APIs Intel x86 Atom_64, android-33 | Google Play Intel x86 Atom_64\n      Android NDK: Not Found\n    Windows SDK:\n      AllowAllTrustedApps: Enabled\n      AllowDevelopmentWithoutDevLicense: Enabled\n      Versions: 10.0.19041.0\n  IDEs:\n    Android Studio: AI-212.5712.43.2112.8609683\n    Visual Studio: 17.1.32328.378 (Visual Studio Community 2022), 16.11.32106.194 (Visual Studio Community 2019)\n  Languages:\n    Java: 17.0.1 - C:\\Program Files\\Java\\jdk-17.0.1\\bin\\javac.EXE\n  npmPackages:\n    @react-native-community/cli: Not Found\n    react: 18.0.0 => 18.0.0\n    react-native: 0.69.2 => 0.69.2\n    react-native-windows: Not Found\n  npmGlobalPackages:\n    *react-native*: Not Found\n\n\n\n
Run Code Online (Sandbox Code Playgroud)\n

jac*_*ack 6

事实证明,这是VSCode 的某种问题

NaN 输出仅在使用 VSCode 调试控制台或活动 VSCode 调试器(将鼠标悬停在变量上)时出现。

logcat 输出是正确的。此外,console.log(typeof variable) 显示变量类型为数字(这确实是正确的)。

const R = [...Array(4).keys()];
R.map((_i, key) => {
  console.log(_i, key,typeof _i,typeof number);
}); 

Output in VSCode Debuger Console: 
NaN NaN number number
1 1 number number
2 2 number number
3 3 number number

Output via Logcat
0 0 number number
1 1 number number
2 2 number number
3 3 number number

Run Code Online (Sandbox Code Playgroud)

谢谢大家的帮助 !!