【问题标题】:Typescript construct giving error when calling values打字稿构造在调用值时出错
【发布时间】:2023-01-06 22:15:05
【问题描述】:

我已经这样定义了我的打字稿对象:

interface myInterface {
    obj1: string;
    obj2 : string,
}

const myValues : {[stage : string]:{[region : string]:myInterface}} = {
    'beta':{
        'us-east-1':{
            obj1: "random_a1",
            obj2: "random_a2"
        },
        'eu-west-1':{
            obj1: "random_b1",
            obj2: "random_c1"
        }
    },
}

现在这就是我想要访问这些值的方式,但是我收到了错误。我应该如何更改我的values,以便我可以这样调用值:

let x = myValues[stage]?[region];

【问题讨论】:

  • myValues[stage]?[region]; 你是说myValues[stage]?.[region];(带.)吗?如果那不是问题,那么您遇到的错误是什么?
  • 我在 stage 中遇到错误。类型“String”不能用作索引类型
  • 好的,你能说明 stage 变量的定义位置吗?听起来您可能已将其创建为 String(大写)而不是 string(小写)
  • 这是Payground link。修复?.错别字后无法重新生成

标签: javascript arrays typescript string


【解决方案1】:
let x = myValues[stage]?.[region];

【讨论】:

    【解决方案2】:

    我不知道我是否理解你的问题,但我相信我可以使用这个返回一些东西

    interface myInterface {
        obj1: string
        obj2: string
      }
    
      const stage1 = 'us-east-1'
    
      const myValues: { [stage: string]: { [region: string]: myInterface } } = {
        beta: {
          'us-east-1': {
            obj1: 'random_a1',
            obj2: 'random_a2',
          },
          'eu-west-1': {
            obj1: 'random_b1',
            obj2: 'random_c1',
          },
        },
      }
    
      console.log(myValues.beta[stage1])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      相关资源
      最近更新 更多