ค้นหาเว็บไซต์

typescript - ตัวแปร "ทั่วโลก" ของ React Native ใน Intellij ไม่ได้กำหนดค่า


นี่คือ 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 เท่านั้น "ตัวแปรประเภท global ไม่สามารถแก้ไขได้" แต่ แอปทำงานได้สำเร็จ ฉันพยายามเพิ่ม @types/node แล้วก็เกิดข้อผิดพลาดประเภทเกี่ยวกับ HermesInternal ที่ไม่ได้เป็นส่วนหนึ่งของวัตถุ global.

แค่เพื่อเป็นการอ้างอิงใน @types/react-native/index.d.ts นี่คือการประกาศ:

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

คำตอบ #1

ฉันสงสัยว่านี่เป็นปัญหากับการพิมพ์ของ React Native ตามที่คุณเห็น การพิมพ์ส่งออกวัตถุ HermesInternal แบบ global แต่พวกมันไม่ได้ประกาศวัตถุแม่ global เอง

เป็นวิธีแก้ปัญหา คุณสามารถเพิ่มการประกาศนี้ไว้เหนือคอมโพเนนต์ของคุณ:

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

ไม่ใช่สิ่งที่ดีที่สุด แต่หวังว่าเราจะได้เห็นไฟล์ typings ที่อัปเดตเพื่อแก้ไขปัญหานี้ ขณะนี้ฉันกำลังใช้ @types/[email