From 056943819cefb94357946b54601861989af64276 Mon Sep 17 00:00:00 2001 From: Sergei Savelev Date: Thu, 30 Apr 2020 02:41:48 +0300 Subject: [PATCH] fix: composeU - deep union for properties --- packages/core/core.ts | 69 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 62 insertions(+), 7 deletions(-) diff --git a/packages/core/core.ts b/packages/core/core.ts index 12a7ab39..7737c4dc 100644 --- a/packages/core/core.ts +++ b/packages/core/core.ts @@ -218,22 +218,77 @@ export function compose() { ) } +type SafeUnionType = P extends keyof C ? C[P] : never + +type DeepUnion2 = { + [P in keyof (T1 & T2)]: SafeUnionType | SafeUnionType +} + +type DeepUnion3 = { + [P in keyof (T1 & T2 & T3)]: SafeUnionType | SafeUnionType | SafeUnionType +} +type DeepUnion4 = { + [P in keyof (T1 & T2 & T3 & T4)]: + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType +} +type DeepUnion5 = { + [P in keyof (T1 & T2 & T3 & T4 & T5)]: + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType +} +type DeepUnion6 = { + [P in keyof (T1 & T2 & T3 & T4 & T5 & T6)]: + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType +} +type DeepUnion7 = { + [P in keyof (T1 & T2 & T3 & T4 & T5 & T6 & T7)]: + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType +} +type DeepUnion8 = { + [P in keyof (T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8)]: + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType + | SafeUnionType +} + export function composeU(fn1: HOC): Composition -export function composeU(fn1: HOC, fn2: HOC): Composition +export function composeU(fn1: HOC, fn2: HOC): Composition> export function composeU( fn1: HOC, fn2: HOC, fn3: HOC, -): Composition +): Composition> export function composeU( fn1: HOC, fn2: HOC, fn3: HOC, fn4: HOC, -): Composition +): Composition> export function composeU( fn1: HOC, @@ -241,7 +296,7 @@ export function composeU( fn3: HOC, fn4: HOC, fn5: HOC, -): Composition +): Composition> export function composeU( fn1: HOC, @@ -250,7 +305,7 @@ export function composeU( fn4: HOC, fn5: HOC, fn6: HOC, -): Composition +): Composition> export function composeU( fn1: HOC, @@ -260,7 +315,7 @@ export function composeU( fn5: HOC, fn6: HOC, fn7: HOC, -): Composition +): Composition> export function composeU( fn1: HOC, @@ -271,7 +326,7 @@ export function composeU( fn6: HOC, fn7: HOC, fn8: HOC, -): Composition +): Composition> export function composeU(...fns: Array>): Composition