From cc88111d61a350a4d24cf339b526d4357f934ddf Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期二, 30 七月 2024 00:31:12 +0800 Subject: [PATCH] 标签模板维护变量更新 --- src/utils/types.ts | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) diff --git a/src/utils/types.ts b/src/utils/types.ts index 4453ec4..7c50e7f 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -40,3 +40,26 @@ export type StyleValue = string | CSSProperties | Array<StyleValue>; export type Mutable<T> = { -readonly [P in keyof T]: T[P] }; + +export type Merge<O extends object, T extends object> = { + [K in keyof O | keyof T]: K extends keyof T ? T[K] : K extends keyof O ? O[K] : never; +}; + +/** + * T = [ + * { name: string; age: number; }, + * { sex: 'male' | 'female'; age: string } + * ] + * => + * MergeAll<T> = { + * name: string; + * sex: 'male' | 'female'; + * age: string + * } + */ +export type MergeAll<T extends object[], R extends object = {}> = T extends [ + infer F extends object, + ...infer Rest extends object[], +] + ? MergeAll<Rest, Merge<R, F>> + : R; -- Gitblit v1.9.3