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

reactjs - คุณกำหนดประเภทอย่างไรเมื่อต้องการใช้ Object.keys กับไฟล์ JSON ใน TypeScript?


ฉันกำลังพยายามเข้าถึงวัตถุจากไฟล์ JSON และข้อผิดพลาดที่ฉันได้รับคือ:

Element implicitly has an 'any' type because expression of type 'any' can't be used to index type '{...}'. ts(7053)

ไฟล์ JSON:

"networks": {
  "5777": {
    "event": {},
    "links": {},
    "address": "string",
    "transactionHash": "string"
  }
}

ค่าของ 5777 จะถูกเปลี่ยนแปลงไปเรื่อย ๆ ดังนั้นฉันจึงพยายามเข้าถึงค่าดังกล่าว ซึ่งทำให้ฉันได้รับข้อผิดพลาด

ตัวอย่างจากไฟล์ TS:

import { abi, networks } from '../build/contracts/Example.json';
import Web3 from 'web3';
let networkId: any = Object.keys(networks)[0]; // 5777
new web3.eth.Contract(abi, networks[networkId].address); // causing error

คำตอบ #1

คุณสามารถร่ายมันด้วยมือได้

let networkId = Object.keys(networks)[0] as keyof typeof networks; // 5777

คำตอบ #2

ก่อนอื่นฉันได้กดไลค์คำตอบของ @ABOS แล้ว และในการปรับปรุงและเพื่อความละเอียดได้กล่าวถึงซอร์สโค้ดต่อไปนี้สำหรับการสร้าง contract data โดยใช้ abi

import Web3 from 'web3'
import ElectionCommission, { networks as ecNetworks} from "./truffle_abis/ElectionCommission.json";

let networkId = Object.keys(ecNetworks)[0] as keyof typeof ecNetworks;
let ecCommissionData = new web3.eth.Contract(ElectionCommission.abi as any, ecNetworks[networkId].address);

หวังว่าสิ่งนี้จะช่วยหลายๆ คนได้