如何在TypeScript中定义键为整数类型的对象类型?
解决整数键对象的TypeScript类型定义问题
你当前的networkConfigType写法无法匹配目标对象,问题出在对数字键的类型定义错误。以下是两种正确的实现方式:
方式一:通用数字索引签名(支持任意数字键)
如果你的网络配置可能新增其他数字ID,用这种方式更灵活:
type NetworkConfigType = { [key: number]: { name: string; ethUsdPriceFeed: string; }; };
方式二:精确指定已知网络ID(类型更严格)
如果网络ID是固定的几个值,用映射类型定义更精确,能避免无效键的出现:
// 先定义所有有效的网络ID联合类型 type ValidNetworkId = 4 | 137; type NetworkConfigType = { [id in ValidNetworkId]: { name: string; ethUsdPriceFeed: string; }; };
验证使用
将networkConfig指定为上述类型即可正常工作:
const networkConfig: NetworkConfigType = { 4: { name: "rinkeby", ethUsdPriceFeed: "0x8A753747A1Fa494EC906cE90E9f37563A8AF630e", }, 137: { name: "polygon", ethUsdPriceFeed: "0xF9680D99D6C9589e2a93a78A04A279e509205945", }, };
错误原因说明
你原来的写法{ number: { ... } }是定义了一个键名为"number"的属性,而非匹配任意数字类型的键,这和目标对象的结构完全不符,所以无法正常匹配。
内容的提问来源于stack exchange,提问作者ABDELLATIF ANAFLOUS
相关产品推荐
相关产品推荐

