如何将以下类型转换为具有键/值对的数组?
type MyObject = {
foo: 'bar'
baz: 'qux'
}
我想要的类型:
type MyKeyValuePair = ['foo', 'bar'] | ['baz', 'qux']
我try 过KeyOf等的各种组合,但它永远不会以联合类型结束,在联合类型中,它们首先在数组中进行参数设置,然后与特定值相匹配.
如何将以下类型转换为具有键/值对的数组?
type MyObject = {
foo: 'bar'
baz: 'qux'
}
我想要的类型:
type MyKeyValuePair = ['foo', 'bar'] | ['baz', 'qux']
我try 过KeyOf等的各种组合,但它永远不会以联合类型结束,在联合类型中,它们首先在数组中进行参数设置,然后与特定值相匹配.
您需要使用Typesript的强大功能--使用映射类型和条件类型.以下是步骤:
使用辅助对象类型将单个键转换为元组:
type ToTuple<T, K extends keyof T> = [K, T[K]];
个
使用映射类型将此辅助对象类型应用于对象类型中的每个关键点:
type TupleMap<T> = {
[K in keyof T]: ToTuple<T, K>;
}[keyof T];
MyObject
类型应用TupleMap
以获得所需的结果:type MyObject = {
foo: 'bar';
baz: 'qux';
}
type MyKeyValuePair = TupleMap<MyObject>; // ['foo', 'bar'] | ['baz', 'qux']
祝好运!