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

如何将已知为类型键的字符串用作对象索引?

解决TypeScript索引类型报错问题

针对你遇到的问题,有两种常用且有效的解决方式:

1. 严格约束输入的field类型(推荐)

直接把input对象的field字段类型限定为keyof Activity,让TypeScript明确知道这个字段是Activity的合法属性键,同时还能保证类型安全:

type Activity = {
  status: string,
  id: number,
  // 其他属性...
}

function update(activity: Activity, input: {field: keyof Activity, content: string}){
  activity[input.field] = input.content;
}

这种方式不仅解决了报错,还能在调用update函数时自动校验field的合法性,避免传入非法属性键。

2. 使用类型断言(适合无法约束输入类型的场景)

如果由于某些原因无法修改input的类型定义,可以通过类型断言告诉TypeScriptinput.field是Activity的合法键:

type Activity = {
  status: string,
  id: number,
  // 其他属性...
}

function update(activity: Activity, input: {field: string, content: string}){
  activity[input.field as keyof Activity] = input.content;
}

或者也可以断言activity为可索引的类型,但这种方式会失去部分类型检查:

function update(activity: Activity, input: {field: string, content: string}){
  (activity as Record<string, string>)[input.field] = input.content;
}

注意:类型断言是开发者向TypeScript做出的“保证”,如果实际传入的field不是合法属性键,运行时可能会出现问题,所以仅在你100%确认输入合法性时使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:50:32