繁体   English   中英

Typescript Object 型转阵列型

[英]Typescript Object type to Array type

将 object 类型转换为对象数组的正确方法是什么,每个对象都包含 object 的一个键?

例如我想改造

type MyObjectType = {
    foo: number,
    bar: string
}

进入

type MyObjectArrayType = { key: 'foo', value: number} | { key: 'bar', value: string}

这样我就可以了

const objects: MyObjectArrayType[] = [{key: 'foo', value: 2}, {key: 'bar', value: 'baz'}]

我在想类似的东西

type MyObjectArrayType<K extends keyof MyObjectType> = { value: MyObjectType[K], key: K }

但不能让它像我想要的那样工作。

您可以使用映射类型来生成联合的每个成员(对于每个属性),并使用索引类型来获取映射类型中的所有值类型。

type MyObjectType = {
    foo: number,
    bar: string
}

type PropUnion<T> = {
  [K in keyof T]: { value: T[K], key: K }
}[keyof T]

type MyObjectArrayType = PropUnion<MyObjectType>;
const objects: MyObjectArrayType[] = [{key: 'foo', value: 2}, {key: 'bar', value: 'baz'}]

游乐场链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM