import { CombinedOptions, TFnType, TranslateOptions, TranslateProps, } from './types'; function parseCombinedOptions({ ns, noWrap, orEmpty, params, language, ...rest }: Partial): Partial { const options: Required = { ns: ns!, noWrap: noWrap!, orEmpty: orEmpty!, language: language!, }; return { ...options, params: { ...rest, }, }; } export const getTranslateProps: TFnType> = ( keyOrProps, ...params ) => { let result = {} as TranslateProps; let options: CombinedOptions | undefined; if (keyOrProps != null && typeof keyOrProps === 'object') { result = keyOrProps; } else { result.key = keyOrProps; if (typeof params[0] === 'string') { result.defaultValue = params[0]; options = params[1] as CombinedOptions; } else if (typeof params[0] === 'object') { options = params[0] as CombinedOptions; } } if (options) { result = { ...parseCombinedOptions(options), ...result, }; } return result; };