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

寻找TypeScript中类型安全的POJO扁平化工具类型实现方案

TypeScript 嵌套类型扁平化工具类型实现

实现代码

// 核心工具类型定义
type Flatten<T, Prefix extends string = ''> = 
  T extends object ? {
    [K in keyof T & string]: 
      `${Prefix}${Prefix extends '' ? '' : '.'}${K}` extends infer FullPath extends string
        ? T[K] extends object ? Flatten<T[K], FullPath> : Record<FullPath, T[K]>
        : never
  }[keyof T & string] extends infer AllFields 
    ? { [K in keyof AllFields]: AllFields[K] } 
    : never
  : never

测试验证

用示例接口测试效果如下:

interface Model {
    name: string;
    address: {
        zipcode: string;
        street: string;
    };
    foo: {
        boo: {
            bar: number;
        }
    }
}

type FlatModel = Flatten<Model>
// 推导得到的FlatModel结构完全符合预期:
// {
//     name: string;
//     "address.zipcode": string;
//     "address.street": string;
//     "foo.boo.bar": number;
// }

补充说明

当前实现默认处理纯对象的嵌套场景,如果需要支持数组、函数等特殊类型的自定义处理,可以根据业务需求调整递归分支的判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 02:27:05