首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我在TypeScript中得到“类型‘字符串’不能用作索引类型”错误

在TypeScript中,当我们使用一个类型作为索引类型时,会出现类型错误。这是因为索引类型必须是数字或字符串类型,而不能是其他类型。

索引类型在对象或接口中用于定义属性的类型。当我们使用一个类型作为索引类型时,我们可以通过该类型的值来访问对象或接口中的属性。例如,我们可以使用字符串类型的索引来访问对象中的属性:

代码语言:typescript
复制
interface MyObject {
  [key: string]: number;
}

const obj: MyObject = {
  foo: 1,
  bar: 2,
};

console.log(obj['foo']); // 输出 1
console.log(obj['bar']); // 输出 2

然而,如果我们尝试使用一个非字符串类型的索引,就会出现类型错误。例如,如果我们使用一个字符串类型的变量作为索引,就会得到"类型 '字符串' 不能用作索引类型"的错误:

代码语言:typescript
复制
const index: string = 'foo';
console.log(obj[index]); // 错误:类型 '字符串' 不能用作索引类型

为了解决这个问题,我们可以使用联合类型来定义索引类型,包括字符串和数字类型。例如:

代码语言:typescript
复制
interface MyObject {
  [key: string | number]: number;
}

const obj: MyObject = {
  foo: 1,
  bar: 2,
  1: 3,
};

console.log(obj['foo']); // 输出 1
console.log(obj['bar']); // 输出 2
console.log(obj[1]); // 输出 3

在这个例子中,我们使用联合类型 string | number 定义了索引类型,这样就可以同时使用字符串和数字类型的索引来访问对象中的属性。

腾讯云相关产品和产品介绍链接地址:

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券