import { defineMessages as intlDefineMessages } from 'react-intl'; type Messages> = { [K in keyof T]: { id: string; defaultMessage: T[K]; }; }; export default function defineMessages>( prefix: string, messages: T ): Messages { const keys: (keyof T)[] = Object.keys(messages); const modifiedMessagesEntries = keys.map((key) => [ key, { id: `${prefix}.${key as string}`, defaultMessage: messages[key], }, ]); const modifiedMessages: Messages = Object.fromEntries( modifiedMessagesEntries ); return intlDefineMessages(modifiedMessages); }