You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:48:23