如何将以下类型转换为具有键/值对的数组?
type MyObject = { foo: 'bar' baz: 'qux' }
我想要的类型:
type MyKeyValuePair = ['foo', 'bar'] | ['baz', 'qux']
我尝试过keyof等的各种组合,但它永远不会成为联合类型,在数组中,它们的第一个参数与特定值匹配。
您需要使用Typesrpt的强大功能——使用映射类型和条件类型。以下是步骤:
使用辅助类型将单个键转换为元组:
type ToTuple<T, K extends keyof T> = [K, T[K]];
使用映射类型将此辅助对象类型应用于对象类型中的每个键:
type TupleMap<T> = { [K in keyof T]: ToTuple<T, K>; }[keyof T];
TupleMap
MyObject
type MyObject = { foo: 'bar'; baz: 'qux'; } type MyKeyValuePair = TupleMap<MyObject>; // ['foo', 'bar'] | ['baz', 'qux']
祝你好运