【问题标题】:Typescript get object value from key打字稿从键中获取对象值
【发布时间】:2022-01-12 14:10:04
【问题描述】:

如何使用 typescript 中对象的键的索引来获取属性?

尽管 TypeScript 有错误,但代码可以正常工作。

我的代码

const payments = {
  KEY1: {prop1: "prop1"},
  KEY2: {prop1: "prop1"}
}

当我尝试通过键值访问时出现错误

const index = 0

const key = Object.keys(payments)[index]
const payment = payments[key] // ERROR HERE

元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“{}”。 在类型“{}”.ts(7053)

上找不到具有“字符串”类型参数的索引签名

payments 的类型是 object

【问题讨论】:

  • 您尝试输入了吗? const payments: { [key: string]: {prop1: string} } = {}

标签: typescript


【解决方案1】:

添加这个

const key = Object.keys(payments)[index] as keyof typeof payments;

当您没有为 payments 显式声明类型时,打字稿会推断为特定键(KEY1KEY2

Object.keys() 将类型作为导致错误的字符串返回。

我修改的上述行将告诉 typescript key 将是付款键而不是字符串。

你可以在这里Creating Types from Types阅读更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    相关资源
    最近更新 更多