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

TypeScript多级键映射结构优化:实现直接层级访问

修改TypeScript对象结构实现层级访问

你当前定义的dependencyMetrics对象中,每个服务(比如MyService)对应的值是一个包含MetricInfo映射的数组,导致无法直接通过dependencyMetrics.MyService.failure或dependencyMetrics.MyService.time的方式访问目标值,必须先索引数组元素(如dependencyMetrics.MyService[0].failure)。要实现层级映射式访问,只需调整类型定义和对象结构,去掉数组包裹即可。

修改方案

1. 调整类型定义

将原类型中服务对应值的数组类型{[name: string]: MetricInfo}[]改为直接的对象类型{[name: string]: MetricInfo},新的类型定义如下:

type DependencyMetrics = {
  [dependencyName: string]: {
    [name: string]: MetricInfo;
  };
};

2. 修改对象字面量

去掉MyService对应值的外层数组括号([]),让服务直接映射到包含failure、time等MetricInfo的对象。

修改后的完整代码

type MetricInfo = {
  metric: Metric;
  metricProperties: MetricOptions;
};

type DependencyMetrics = {
  [dependencyName: string]: {
    [name: string]: MetricInfo;
  };
};

const dependencyMetrics: DependencyMetrics = {
  MyService: {
    failure: {
      metric: new Metric({
        namespace: 'namespace',
        metricName: 'ABC'
      }),
      metricProperties: {
        period: Duration.seconds(60),
        statistic: 'Average'
      }
    },
    time: {
      metric: new Metric({
        namespace: 'namespace',
        metricName: 'age'
      }),
      metricProperties: {
        period: Duration.seconds(60),
        statistic: 'Average'
      }
    }
  }
};

效果验证

修改完成后,你就可以直接通过以下方式访问目标值:

// 直接访问failure指标
dependencyMetrics.MyService.failure;
// 直接访问time指标
dependencyMetrics.MyService.time;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:32:03