From ae1e106ccd3b05938941ec9dd82b85e4dc4826ba Mon Sep 17 00:00:00 2001 From: JellyBrick Date: Mon, 4 Sep 2023 17:38:03 +0900 Subject: [PATCH] feat(config): more 'optimized' generic --- config/index.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/config/index.ts b/config/index.ts index a27666dc..739cd2a7 100644 --- a/config/index.ts +++ b/config/index.ts @@ -32,15 +32,11 @@ type Paths = [D] extends [never] ? never : T extends o : never }[keyof T] : '' -type FirstKey = T extends `${infer K}.${string}` ? K : T; -type NextKey = T extends `${string}.${infer K}` ? K : T; -type PathValue = ( - T extends object - ? FirstKey extends keyof T - ? PathValue], NextKey> - : T +type SplitKey = K extends `${infer A}.${infer B}` ? [A, B] : [K, string] +type PathValue = + SplitKey extends [infer A extends keyof T, infer B extends string] + ? PathValue : T -); const get = >(key: Key) => store.get(key) as PathValue; export default {