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

TypeScript中如何正确使用Object.entries配合map实现带类型安全的数据转换

实现类型安全的转换方案

你只需要先为原始接口返回数据、转换后的目标数据分别定义类型约束,再给转换逻辑加上类型标注即可,完整实现如下:

步骤1:定义类型

// 定义商品图片结构
interface ProductImage {
  url: string;
}

// 定义原始接口返回的单个商品结构
interface RawProduct {
  amount: number;
  id: number;
  image: ProductImage;
  name: string;
  price: number;
}

// 定义接口整体响应结构:键是字符串类型的唯一标识,值为原始商品结构
type ApiResponse = Record<string, RawProduct>;

// 定义转换后的目标商品结构
interface TransformedProduct {
  amount: number;
  id: string; // 替换为接口返回的字符串键作为新的id
  image: ProductImage;
  name: string;
  price: number;
  // 如果需要保留原始的数字id,可以额外增加字段 rawId: number
}

步骤2:添加类型标注的转换代码

// 请求接口拿到的data需要先标注为ApiResponse类型
const transformedData: TransformedProduct[] = Object.entries(data as ApiResponse).map(([key, value]): TransformedProduct => {
  return {
    ...value,
    id: key,
    // 保留原始id的写法:rawId: value.id
  };
});

补充说明

如果无法保证接口返回字段100%符合定义的RawProduct结构,可以搭配运行时校验库做类型守卫,避免后端返回异常字段导致的类型不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:24:04