export function mergeDefaultAndUserConfig( defaultConfig: DefaultConfig, userConfigFn: () => UserConfig, ): DefaultConfig & UserConfig; export function mergeDefaultAndUserConfig( defaultConfig: DefaultConfig ): DefaultConfig; export function mergeDefaultAndUserConfig( defaultConfig: DefaultConfig, userConfigFn?: () => UserConfig, ): DefaultConfig { if (!userConfigFn) { return defaultConfig; } return { ...defaultConfig, ...userConfigFn(), } }