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

如何基于同表属性生成复用元组类型,避免重复定义?

解决方案:复用元组类型的简化方式

你可以先定义一个包含所有字段的基础元组类型,再通过元组提取/重组的方式复用它,既不用重复定义,也能保证顺序的严格性,同时避免对象转元组的性能损耗。

步骤1:定义基础字段元组

先把表的所有字段按统一顺序定义成一个具名元组,作为基础类型:

type TableFields = [
  id: number,
  name: string,
  status: boolean,
  createdAt: string
];

步骤2:基于基础元组生成操作类型

利用TypeScript的元组索引访问和扩展运算符,直接从基础元组中提取或重组需要的字段顺序:

// DeleteParams:取前两个字段 [id, name]
type DeleteParams = Pick<TableFields, 0 | 1>[];

// InsertParams:直接复用完整的基础元组
type InsertParams = TableFields[];

// UpdateParams:重组字段顺序 [id, status, name]
type UpdateParams = [TableFields[0], TableFields[2], TableFields[1]][];

验证效果

这样定义后,getUpdateList的返回类型可以直接使用这些复用后的类型,完全符合原有的类型约束,同时避免了重复定义:

function getUpdateList(): {
  deleteList: DeleteParams; 
  insertList: InsertParams;
  updateList: UpdateParams;
} {
  // 示例实现
  return {
    deleteList: [[1, "foo"], [2, "bar"]],
    insertList: [[3, "baz", true, "2024-01-01"]],
    updateList: [[1, false, "foo-updated"]]
  };
}

补充说明

  • 这种方式完全基于元组操作,不需要任何对象转换,不会产生性能损耗
  • 基础元组只需要定义一次,后续操作类型的修改只需要调整索引或重组逻辑即可
  • 对于字段顺序有严格要求的场景,索引访问能精准保证顺序的正确性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:30:59