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

TypeScript如何创建递归嵌套映射类型 实现属性转boolean数组类型

解决方案

你只需要在泛型中加入递归判断逻辑:如果当前属性的类型是对象,就再次套用该泛型处理嵌套结构,否则直接返回boolean[]即可,最终泛型写法如下:

type BooleanResult<T> = {
  [Prop in keyof T]: T[Prop] extends object ? BooleanResult<T[Prop]> : boolean[]
}

使用验证

直接套用你的Customer类型即可得到目标结果:

type Result = BooleanResult<Customer>

生成的Result类型和你要求的结构完全一致:

// 等价于
type Result = {
  companyName: boolean[]
  contactPerson: {
    firstName: boolean[]
    lastName: boolean[]
  }
}

边界场景适配

如果你需要兼容数组、函数等特殊非普通对象的场景,可以调整条件判断规则,比如需要把数组类型直接映射为boolean[]而非递归处理的话,可以修改为:

type BooleanResult<T> = {
  [Prop in keyof T]: 
    T[Prop] extends Array<any> ? boolean[] :
    T[Prop] extends object ? BooleanResult<T[Prop]> :
    boolean[]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:48:05