fui-fancyui
Version:
FancyUI Libary
14 lines (13 loc) • 626 B
TypeScript
type StringKeys<T> = Extract<keyof T, string>;
type RequiredKeys<T> = {
[K in StringKeys<T>]: undefined extends T[K] ? never : K;
}[StringKeys<T>];
type OptionalKeys<T> = Exclude<StringKeys<T>, RequiredKeys<T>>;
type RequiredKeysAfterOmit<T, U extends StringKeys<T>> = Exclude<RequiredKeys<T>, U>;
type OptionalKeysAfterOmit<T, U extends StringKeys<T>> = Exclude<OptionalKeys<T>, U>;
export type TStyledPrefixAndOmiter<T extends Record<string, any>, U extends StringKeys<T> = never> = {
[P in RequiredKeysAfterOmit<T, U> as `$${P}`]: T[P];
} & {
[P in OptionalKeysAfterOmit<T, U> as `$${P}`]?: T[P];
};
export {};