interface ParsedName { use?: string family?: string given?: string[] prefix?: string[] suffix?: string[] } function safeJoin(arr: string[]) { return arr?.length > 0 ? arr.join(' ') + ' ' : '' } export function joinName( names?: ParsedName[], use: String[] = ['official'], ): String { if (!names || names.length === 0) { return 'Nama tidak tersedia' } const usedName = names.filter((name) => name && use.includes(name.use))[0] let name = '' name += usedName?.prefix?.length > 0 ? usedName.prefix.join(' ') + ' ' : '' name += usedName?.given?.length > 0 ? usedName.given.join(' ') + ' ' : '' name += usedName?.family ?? '' name += usedName?.suffix?.length > 0 ? ' ' + usedName.suffix.join(' ') : '' return name.trim() || usedName?.text || 'Nama tidak tersedia' }