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

TypeScript如何给指定类型的所有属性key添加自定义字符串前缀

实现方案

该功能在 TypeScript 中完全可以实现,借助映射类型重映射、模板字面量类型以及内置的 Capitalize 工具类型即可完成需求,具体实现如下:

工具类型定义

type PrefixValues<P extends string, T extends object> = {
  [K in keyof T as `${P}${Capitalize<string & K>}`]: T[K]
}

代码说明

  • 泛型约束:P extends string 限定传入的前缀为字符串类型,T extends object 限定待处理的源类型为对象类型
  • 键名重映射:通过 as 子句修改原属性名,Capitalize<string & K> 会将原属性名的首字母转为大写,和前缀拼接后正好符合 前缀+驼峰原属性名 的命名规则
  • 保留属性值类型:直接将原属性的值类型 T[K] 赋值给新属性,不会修改值的类型定义

效果验证

代入你给出的示例测试:

type Values = {
  name: "Bob",
  email: "bob@mail.com"
}

type NewValues = PrefixValues<"my", Values>;
// 最终 NewValues 的类型等价于:
// {
//   myName: "Bob",
//   myEmail: "bob@mail.com"
// }

完全匹配你需要的 Values.name 对应 NewValues.myName 的效果。


内容的提问来源于stack exchange,提问作者Kody R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:06:02