From 543e69690cc7d81dfe1f3ba181ed7df7ee1444b5 Mon Sep 17 00:00:00 2001 From: Jacek Pudysz Date: Wed, 7 Feb 2024 15:33:31 +0100 Subject: [PATCH] feat: narrow down boolean variants --- src/types/variants.ts | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/types/variants.ts b/src/types/variants.ts index f9e58ae0..29112707 100644 --- a/src/types/variants.ts +++ b/src/types/variants.ts @@ -6,17 +6,16 @@ type ExtractVariantKeys = T extends object ? ExtractVariant : never -type HasTrue = 'true' extends keyof T ? true : false -type HasFalse = 'false' extends keyof T ? true : false +type HasBooleanVariants = T extends Record<'true', any> + ? true + : T extends Record<'false', any> + ? true + : false type ExtractSubVariantKeys = T extends object - ? [HasTrue, HasFalse] extends [true, true] + ? HasBooleanVariants extends true ? keyof Omit | boolean | undefined - : [HasTrue] extends [true] - ? keyof Omit | true | undefined - : [HasFalse] extends [true] - ? keyof Omit | false | undefined - : keyof Omit + : keyof Omit | undefined : never type ExtractVariant = T extends (...args: any) => infer R