React Native“全局”变量Intellij未定义

时间:2019-09-19 01:31:41

标签: typescript react-native

这是app.tsx

{global.HermesInternal == null ? null : (
    <View style={styles.engine}>
    <Text style={styles.footer}>Engine: Hermes</Text>
    </View>
)}

这是package.json

  "devDependencies": {
    "@babel/core": "^7.5.0",
    "@babel/runtime": "^7.5.0",
    "@react-native-community/eslint-config": "^0.0.3",
    "@types/jest": "^24.0.15",
    "@types/react": "^16.9.2",
    "@types/react-native": "^0.60.15",
    "@types/react-test-renderer": "^16.8.2",
    "babel-jest": "^24.1.0",
    "jest": "^24.1.0",
    "metro-react-native-babel-preset": "^0.54.1",
    "react-native-typescript-transformer": "^1.2.13",
    "react-test-renderer": "16.8.6",
    "typescript": "^3.6.3"
  },

我仅从 Intellij 收到类型错误消息,“全局类型的未解析变量” ,但应用程序成功运行。我尝试添加@types/node,然后引发有关HermesInternal不属于全局对象的类型错误。


仅在@types/react-native/index.d.ts中引用,这是声明:

declare global {
    ...
    const HermesInternal: null | {};
}

1 个答案:

答案 0 :(得分:3)

我怀疑这是React本机类型的问题。如您所见,类型会导出全局HermesInternal对象,但不会声明global父对象本身。

作为解决方法,您可以在组件上方包含以下声明:

declare global {
  const global: { HermesInternal: null | {} }
}

不太理想,但希望我们会看到更新的打字文件来解决此问题。我目前在@types/react-native@0.60.15上。