// https://github.com/infinitered/ignite/blob/master/boilerplate/app/i18n/i18n.ts export type RecursiveKeyOf = { [TKey in keyof TObj & (string | number)]: RecursiveKeyOfHandleValue< TObj[TKey], `${TKey}` >; }[keyof TObj & (string | number)]; type RecursiveKeyOfInner = { [TKey in keyof TObj & (string | number)]: RecursiveKeyOfHandleValue< TObj[TKey], `['${TKey}']` | `.${TKey}` >; }[keyof TObj & (string | number)]; type RecursiveKeyOfHandleValue< TValue, Text extends string > = TValue extends any[] ? Text : TValue extends object ? Text | `${Text}${RecursiveKeyOfInner}` : Text;