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

问题描述

我有一个使用数学表达式创建指标的用例-

class _MainActivityState extends State<MainActivity> {

  int _selectedPage = 0;
  List<Widget> Pagelist = List<Widget>();

  @override
  void initState() {
    Pagelist.add(HomePage());
    Pagelist.add(ChatPage());
    super.initState();
  }

 @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),),body: IndexedStack(
        index: _selectedPage,children: Pagelist,//Bottom Navigation Bar added
      bottomNavigationBar: BottomNavigationBar(
    .....

这里metricArguments是new MathExpression({ expression: `SUM([${Object.keys(metricArguments).join(",")}])`,usingMetrics: metricArguments,}) ,但Map<string,IMetric>需要usingMetrics类型。我想问一下如何将Record<string,IMetric>转换成Map<string,Imetric>,因为我有指标存储在地图中。 我也可以将指标插入到Record类型而不是map中,但是找不到任何方法

解决方法

您将需要一个函数来将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),})