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

为泛型关联的OrderByType设置默认值报错,求解决方案

问题分析

你定义的OrderByType<T>要求对象必须包含Entity的所有属性,每个属性的值都得是'asc'或'desc'。但你给的默认值{ createdAt: 'asc' }只包含了createdAt这一个属性,当Entity存在其他属性时,这个默认值就不满足OrderByType<Entity>的类型要求,因此TypeScript抛出错误。

解决方案

方案一:调整类型定义(推荐)

修改OrderByType的定义,将其改为可选属性的集合,这样只需要包含部分属性(甚至空对象)都符合类型要求,完全匹配你“设置默认排序、其余规则可选添加”的需求:

// 用Partial包裹,让所有属性变为可选
type OrderByType<T> = Partial<{ [key in keyof T]: 'asc' | 'desc' }>;

export class OrderByArgs<Entity extends { createdAt: Date }> {
  orderBy: OrderByType<Entity> = { createdAt: 'asc' };
}

方案二:类型断言(不推荐,仅临时绕过)

如果不想修改OrderByType的定义,可以用类型断言强制让TypeScript接受默认值,但这种方式不够严谨,仅适合确定场景下使用:

type OrderByType<T> = {
  [key in keyof Partial<T>]: 'asc' | 'desc';
};

export class OrderByArgs<Entity extends { createdAt: Date }> {
  orderBy: OrderByType<Entity> = { createdAt: 'asc' } as OrderByType<Entity>;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:32:20