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

如何修复TypeScript错误:元素隐式'any'类型无法索引空对象

TypeScript错误修复方案:对象索引类型不匹配问题

错误原因

代码中reduce的初始值为{},TypeScript默认将其推断为{}类型。当使用字符串类型的modifiedKey为该对象赋值时,由于空对象未定义字符串索引签名,触发类型错误。

修复方案

方案1:给初始值添加类型断言

通过as Record<string, string>明确初始值是键值均为字符串的对象:

const a = {
  '/app/developer-tools/API-keys': '/app/developer-tools/API-keys',
  '/app/developer-tools/API-reference': '/app/developer-tools/API-reference',
  '/app/engage': '/app/engage',
};

export const modifiedPaths = Object.keys(a).reduce((acc, key) => {
  const modifiedKey = key.replace("/app/", "");
  acc[modifiedKey] = a[key];
  return acc;
}, {} as Record<string, string>);

方案2:为reduce指定泛型参数

提前定义返回对象的类型,通过泛型参数告知TypeScript累加器的类型:

const a = {
  '/app/developer-tools/API-keys': '/app/developer-tools/API-keys',
  '/app/developer-tools/API-reference': '/app/developer-tools/API-reference',
  '/app/engage': '/app/engage',
};

type ModifiedPaths = {
  [key: string]: string;
};

export const modifiedPaths = Object.keys(a).reduce<ModifiedPaths>((acc, key) => {
  const modifiedKey = key.replace("/app/", "");
  acc[modifiedKey] = a[key];
  return acc;
}, {});

方案3:精确类型推导(保留修改后键的字面量类型)

如果需要让modifiedPaths的键为原键去掉/app/后的具体字面量类型,可使用以下写法:

const a = {
  '/app/developer-tools/API-keys': '/app/developer-tools/API-keys',
  '/app/developer-tools/API-reference': '/app/developer-tools/API-reference',
  '/app/engage': '/app/engage',
} as const;

type OriginalKeys = keyof typeof a;
type ModifiedKeys = OriginalKeys extends `/app/${infer Rest}` ? Rest : never;

export const modifiedPaths = Object.keys(a).reduce((acc, key) => {
  const modifiedKey = key.replace("/app/", "") as ModifiedKeys;
  acc[modifiedKey] = a[key];
  return acc;
}, {} as Record<ModifiedKeys, string>);

此方案下modifiedPaths的键会被精确推断为'developer-tools/API-keys'、'developer-tools/API-reference'、'engage',而非宽泛的string类型。

内容的提问来源于stack exchange,提问作者merlin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:05:11