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

如何用TypeScript工具类型将接口所有字段转为对应类型数组?

解决方案:用TypeScript映射类型自动生成过滤接口

你可以通过TypeScript的映射类型实现ConvertAllKeysToArrays工具类型,自动将目标接口的所有字段转为对应类型的数组,再结合Partial让过滤参数的每个字段都可选。

实现工具类型

type ConvertAllKeysToArrays<T> = {
  [K in keyof T]: T[K][]
};

这个类型会遍历传入的泛型T的所有键K,将每个键对应的原始类型T[K]替换为该类型的数组T[K][]。

完整使用示例

// 原始用户接口
interface User {
  name: string;
  id: string;
  age: number;
  town: string;
}

// 自动转换字段为数组的工具类型
type ConvertAllKeysToArrays<T> = {
  [K in keyof T]: T[K][]
};

// 定义查询函数,参数为可选的过滤条件
function queryUsers(filter: Partial<ConvertAllKeysToArrays<User>>) {
  // 这里编写你的用户查询逻辑
}

// 调用示例:支持传入任意组合的过滤字段
queryUsers({ name: ["Alice", "Bob"], age: [25, 30] });
queryUsers({ town: ["London", "Paris"] });
queryUsers({ id: ["user_123", "user_456"] });

优势

当User接口的字段更新(比如新增/删除字段、修改字段类型)时,ConvertAllKeysToArrays<User>会自动同步更新,无需手动维护单独的UserFilter接口,彻底避免冗余定义和类型不一致问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:36:30