这是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 | {};
}
答案 0 :(得分:3)
我怀疑这是React本机类型的问题。如您所见,类型会导出全局HermesInternal
对象,但不会声明global
父对象本身。
作为解决方法,您可以在组件上方包含以下声明:
declare global {
const global: { HermesInternal: null | {} }
}
不太理想,但希望我们会看到更新的打字文件来解决此问题。我目前在@types/react-native@0.60.15
上。