@navikt/ds-react
Version:
React components from the Norwegian Labour and Welfare Administration.
29 lines (21 loc) • 921 B
text/typescript
import type nb from "./locales/nb";
/* https://dev.to/pffigueiredo/typescript-utility-keyof-nested-object-2pa3 */
type NestedKeyOf<ObjectType extends object> = {
[Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends object
? `${Key}.${NestedKeyOf<ObjectType[Key]>}`
: `${Key}`;
}[keyof ObjectType & (string | number)];
export type TFunction<T extends Component> = (
keypath: NestedKeyOf<Translations[T]>,
replacements?: Record<string, string | number>,
) => string;
/* https://stackoverflow.com/questions/47914536/use-partial-in-nested-property-with-typescripts */
type RecursivePartial<T> = {
[P in keyof T]?: RecursivePartial<T[P]>;
};
export type Translations = typeof nb;
export type PartialTranslations = RecursivePartial<Translations>;
export type Component = keyof Translations;
export type ComponentTranslation<T extends Component> = RecursivePartial<
Translations[T]
>;