import defaultLocale from '../../locales/ru.json'; type Split = S extends `${infer A}${D}${infer B}` ? [A, ...Split] : [S]; type NestedObject = T extends [infer Head, ...infer Tail] ? Head extends string ? { [key in Head]: NestedObject } : never : string; // Основная утилита для обработки union type type CreateTree = UnionToIntersection> : never : never>; // Утилита для объединения типов type UnionToIntersection = // eslint-disable-next-line @typescript-eslint/no-explicit-any (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; type LanguageResource = CreateTree; declare module "i18next" { interface CustomTypeOptions { resources: { '~': LanguageResource }; } }