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

TypeScript属性别名(Aliasing)实现遇到的类型问题

CQL封装工具别名功能的TypeScript类型修复

类型代码修改

替换原SelectResult及相关辅助类型为以下代码:

// 解析单个字段的别名与对应类型
type ResolveField<T> = 
  T extends { as: infer Alias } 
    ? Alias extends string ? { [K in Alias]: T['type'] } : never
    : T extends { name: infer FieldName } 
      ? FieldName extends string ? { [K in FieldName]: T['type'] } : never
      : never;

// 合并所有字段的解析结果
type SelectResult<Fields extends readonly any[]> = 
  Fields extends [infer Head, ...infer Tail]
    ? ResolveField<Head> & SelectResult<Tail>
    : {};

效果说明

修改后:

  • test1 返回类型正确推导为 { number_alias: number, id_alias: string }
  • test2 返回类型正确推导为 { numero: number, id_alias: string }
  • test3 原有正常推导逻辑不受影响

注意:保留代码中1作为数据库客户端模拟的部分,以及as unknown as ***的类型断言,仅修改上述类型定义即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:15:22