在打字稿中将地图转换为记录

Ama*_*man 4 typescript typescript2.0

我有一个使用案例,其中我使用数学表达式创建一个指标 -

new MathExpression({
  expression: `SUM([${Object.keys(metricArguments).join(", ")}])`,
  usingMetrics: metricArguments,
})
Run Code Online (Sandbox Code Playgroud)

这里 metricArguments 是一个Map<string,IMetric>usingMetrics需要Record<string,IMetric>类型。我想问如何将 a 转换Map<string,Imetric>Record<string,Imetric>,因为我将指标存储在地图中。我还可以将指标插入记录类型而不是映射中,但找不到任何方法来执行此操作。

Has*_*qvi 7

您将需要一个函数将 转换Map为对象文字。

function convertMapToObject(metricArguments: Map<string,IMetric>): Record<string,IMetric> {
  let newObject: Record<string,IMetric> = {}
  for (let [key, value] of metricArguments) {
    newObject[key] = value;
  }
  return newObject;
}

new MathExpression({
  expression: `SUM([${Object.keys(metricArguments).join(", ")}])`,
  usingMetrics: convertMapToObject(metricArguments),
})
Run Code Online (Sandbox Code Playgroud)