将对象类型转换为对象数组的正确方法是什么,每个对象都包含对象的一个键?
比如我想改造
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'}]
关于 typescript 对象类型到数组类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62405615/