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

如何创建符合需求的TypeScript Map?语法问题求助

解决Map初始化的语法问题

你的问题出在没有正确实例化Map对象——fields.map()返回的是一个键值对数组,但你直接把它赋值给了Map类型的变量,TypeScript(以及原生JS)不会自动将数组转换为Map实例,这就导致了类型不匹配和运行错误。

正确的代码实现

只需要把map生成的数组传入Map的构造函数即可:

const fields = ['cashBalance', 'openTradeEquity', 'initialMargin', 'optionValue', 'treasuries', 'margin'];
const total: Map<string, {sum: number}> = new Map(fields.map(f => [f, {sum: 0}]));

访问方式说明

需要注意的是,Map的取值不能直接用对象属性的语法(total['cashBalance']),而是要用get()方法:

// 获取cashBalance的sum值
const cashSum = total.get('cashBalance')?.sum;

如果你的业务场景确实需要像对象属性那样直接访问,可以考虑用普通对象代替Map,代码如下:

const total: Record<string, {sum: number}> = fields.reduce((acc, f) => {
  acc[f] = {sum: 0};
  return acc;
}, {} as Record<string, {sum: number}>);

// 现在可以直接这样访问
console.log(total.cashBalance.sum);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:24:15