type HasUnderline = "_" extends keyof T ? true : false; type ExtractKeys = { [K in keyof T]-?: K extends "_" ? never : K extends `_${string}` ? never : HasUnderline extends true ? K | ExtractKeys : K; }[keyof T]; type AllKeys = ExtractKeys; type HasUnderscoreKey = T extends { _: unknown; } ? true : false; type FilteredKeys = { [K in keyof T as HasUnderscoreKey extends true ? K : never]: Omit; }; type Ex = K extends keyof T ? T[K] : Ex>, K>; type ExtractedValues = T extends Record ? V : never; type MergedValues = ExtractedValues>; type ToUnionOfFunction = T extends any ? (x: T) => any : never; type UnionToIntersection = ToUnionOfFunction extends (x: infer P) => any ? P : never; type FlatObj = { [key in AllKeys]: Ex; }; type SetViewValue = { [key in keyof T]: "_" extends keyof T[key] ? T[key]["_"] : T[key]; }; type frameType = SetViewValue>; export type { frameType };