Ore*_*lus 5 typescript typescript-typings
将对象类型转换为对象数组(每个对象都包含该对象的一个键)的正确方法是什么?
\n\n比如我想改造
\n\ntype MyObjectType = {\n foo: number,\n bar: string\n}\nRun Code Online (Sandbox Code Playgroud)\n\n进入
\n\ntype MyObjectArrayType = { key: 'foo', value: number}\xc2\xa0| { key: 'bar', value: string}\nRun Code Online (Sandbox Code Playgroud)\n\n这样我就可以做
\n\nconst objects: MyObjectArrayType[] = [{key: 'foo', value: 2}, {key: 'bar', value: 'baz'}]\nRun Code Online (Sandbox Code Playgroud)\n\n我在想类似的事情
\n\ntype MyObjectArrayType<K extends keyof MyObjectType> = { value: MyObjectType[K], key: K }\nRun Code Online (Sandbox Code Playgroud)\n\n但无法让它像我想要的那样工作。
\n您可以使用映射类型来生成联合的每个成员(对于每个属性),并使用索引类型来获取映射类型中的所有值类型。
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'}]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |