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

TypeScript使用计算属性遇类型错误:无string索引签名问题求助

解决TypeScript计算属性索引类型错误

错误原因

你遇到的错误是因为checkParameter被定义为string | number类型,TypeScript无法确认它是User1类型的有效键,而User1没有声明接受任意string类型的索引签名,所以抛出类型错误。

解决方法

1. 限定索引变量为目标类型的键集合

将checkParameter的类型改为keyof User1,让TypeScript明确它只能是User1的合法键:

type User1 = {
  name: string;
  age: number;
  address: string;
};

const user1: User1 = {
  name: "user1",
  age: 23,
  address: "address",
};

// 限定类型为User1的键集合
let checkParameter: keyof User1 = "name";
console.log(user1[checkParameter]);

checkParameter = "age";
console.log(user1[checkParameter]);

checkParameter = "address";
console.log(user1[checkParameter]);

2. 为目标类型添加索引签名

如果checkParameter的值是运行时随机生成的任意string/number,可以给User1添加索引签名,允许任意字符串键:

type User1 = {
  name: string;
  age: number;
  address: string;
  // 索引签名:任意string键对应的值类型为string|number
  [key: string]: string | number;
};

const user1: User1 = {
  name: "user1",
  age: 23,
  address: "address",
};

let checkParameter: string | number = "name";
console.log(user1[checkParameter]);

checkParameter = "age";
console.log(user1[checkParameter]);

checkParameter = "address";
console.log(user1[checkParameter]);

3. 使用类型断言(谨慎使用)

如果能确保运行时checkParameter一定是User1的有效键,可以用类型断言跳过类型检查:

console.log(user1[checkParameter as keyof User1]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 14:32:04