记录类型,其中值与定义的接口相同但作为数组
Record type where values are the same as a defined interface but as an array
我有一个接口,其中所有属性都有一个基本类型:
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
类型时我必须将它作为一个参数给出...而这不是我想要的。
我希望 Database
类型可以按原样使用。
解决方案:
interface Types {
a: number,
b: string,
c: boolean
}
type ValueToArray<T> = {
[K in keyof T]: Array<T[K]>;
};
type Database = ValueToArray<Types>;
type ValueToArray<T> = {
[K in keyof T]: Array<T[K]>;
};
我有一个接口,其中所有属性都有一个基本类型:
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
类型时我必须将它作为一个参数给出...而这不是我想要的。
我希望 Database
类型可以按原样使用。
解决方案:
interface Types {
a: number,
b: string,
c: boolean
}
type ValueToArray<T> = {
[K in keyof T]: Array<T[K]>;
};
type Database = ValueToArray<Types>;
type ValueToArray<T> = {
[K in keyof T]: Array<T[K]>;
};