UNPKG

mix-cn

Version:

一个用于字符串拼接的小工具,常用于 class name 的拼接

25 lines (24 loc) 1.01 kB
/** * 参数的数据类型 */ export type EnClassNameItem = null | number | string | boolean | undefined | (() => string) | (() => EnClassNameItem[]) | EnClassNameItem[] | Record<string, boolean | undefined>; /** * 使用 infer 判断出当前的数据类型 * * 字符串为具体的字符串值而非 string */ export type EnTypeofClassNameItem<T> = T extends null | boolean | undefined ? '' : T extends readonly [unknown, infer U] ? EnTypeofClassNameItem<U> | '' : T extends readonly [unknown, infer U, infer V] ? EnTypeofClassNameItem<U> | EnTypeofClassNameItem<V> : T extends Record<string, boolean | undefined> ? keyof T | '' : T extends () => string ? string : T; /** * 递归判断当前返回的数据类型 */ export type EnXcn<T> = T extends [infer U, ...infer V] ? `${U & string} ${EnXcn<V>}` : ''; /** * * 合并 class * * merge class name * */ export declare function xcn<T extends EnClassNameItem[]>(...classNameList: T): EnXcn<{ [K in keyof T]: EnTypeofClassNameItem<T[K]>; }>;