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

如何编写TypeScript工具类型将小驼峰属性名转为帕斯卡命名

TypeScript 小驼峰转帕斯卡命名工具类型实现

完全可以通过TS 4.1+ 新增的键重映射、内置字符串工具类型实现需求,具体实现如下:

基础版(仅处理单层对象)

直接遍历对象属性,通过内置Capitalize工具类型将字符串类型的属性名首字母转为大写,值类型保持原样:

type CamelToPascal<T> = T extends object ? {
  [K in keyof T as K extends string ? Capitalize<K> : K]: T[K]
} : T

效果验证

type Driver = {
  firstName: string
  lastName: string
  active: boolean
}

type PascalDriver = CamelToPascal<Driver>
// 转换后等价于:
// type PascalDriver = {
//   FirstName: string
//   LastName: string
//   Active: boolean
// }

完全匹配预期转换结果。

递归增强版(支持嵌套对象、数组场景)

如果DTO存在嵌套对象、对象数组结构,可以使用递归版本,所有层级的小驼峰属性都会被统一转换:

type CamelToPascal<T> = 
  // 处理数组类型:递归处理数组元素
  T extends (infer Item)[] ? CamelToPascal<Item>[] :
  // 处理对象类型:重映射键名+递归处理属性值
  T extends object ? {
    [K in keyof T as K extends string ? Capitalize<K> : K]: CamelToPascal<T[K]>
  } :
  // 基础类型直接返回
  T

注意事项

  • 该实现依赖TypeScript 4.1及以上版本,依赖的核心特性为键重映射(Key Remapping via as)和模板字面量类型,低版本TS无法支持
  • 实现默认保留非字符串类型的属性键(如数字、Symbol键),如果业务中不存在这类键可以简化判断逻辑

内容的提问来源于stack exchange,提问作者Medisch Labo Bruyland

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:48:28