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

如何基于TypeScript interface构造属性为对应数组类型的自定义type

TypeScript 接口属性批量转数组类型实现方案

基础接口定义

现有所有属性均为基础类型的接口如下:

interface Types {
    a: number,
    b: string,
    c: boolean
}

需求说明

需要得到名为Database的类型,结构和上述Types接口完全一致,但每个属性的类型替换为原类型的数组形式,最终效果如下:

{
    a: number[],
    b: string[],
    c: boolean[]
}

错误实现分析

最初尝试的写法如下:

type Database<Key extends keyof Types> = Record<Key, Array<Types[Key]>>

该写法的问题是使用Database类型时必须传入泛型参数,无法直接无参数使用。

正确实现方案

通过自定义映射类型实现,代码如下:

interface Types {
    a: number,
    b: string,
    c: boolean
}

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

type Database = ValueToArray<Types>;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:24:00