如何在 TypeScript 中获取 JSON 文件上的 Object.keys 时设置类型?
Posted
技术标签:
【中文标题】如何在 TypeScript 中获取 JSON 文件上的 Object.keys 时设置类型?【英文标题】:How do you set types on getting Object.keys on JSON file in TypeScript? 【发布时间】:2021-04-03 16:18:21 【问题描述】:我正在尝试从 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
【讨论】:
你能解释一下keyof
在做什么吗?它是否从 JSON 文件中获取密钥并将类型转换为 networks
对象?
是的,你的问题。文档很好地解释了typescriptlang.org/docs/handbook/2/indexed-access-types.html以上是关于如何在 TypeScript 中获取 JSON 文件上的 Object.keys 时设置类型?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 url 获取 json 数据并将其保存到 const 变量 [TypeScript]
如何从Typescript中以#或@开头的属性获取JSON数据
如何从 Typescript 中的 package.json 获取版本?