I need to take a user's name and format it 'lastName, firstName middleName'. If firstName and middleName are not present then the comma should not be included with lastName. Below is what I came up with and I'm wondering if there are ways I can make this better.
The code was adapted from another function written by a senior developer at my company. I'm trying to expand my way of problem-solving for conditional situations.
export function getLastNameFirstNameFullUserName(
  user: { firstName?: string; lastName?: string; middleName?: string },
  includeMiddleName = false,
): string {
  const { firstName, lastName, middleName } = user;
  const userNameArray: string[] = [];
  if (isNotEmptyString(lastName)) {
    useLastNameWithComma(firstName, includeMiddleName, middleName)
      ? userNameArray.push(`${lastName},`)
      : userNameArray.push(`${lastName}`);
  }
  isNotEmptyString(firstName) && userNameArray.push(`${firstName}`);
  includeMiddleName && isNotEmptyString(middleName) && userNameArray.push(`${middleName}`);
  return userNameArray.join(' ');
}
function useLastNameWithComma(firstName: string, includeMiddleName: boolean, middleName?: string): boolean {
  if (isNotEmptyString(firstName)) {
    return true;
  }
  if (includeMiddleName && isNotEmptyString(middleName)) {
    return true;
  }
  return false;
}
export function isNotEmptyString(item: string | null | undefined): boolean {
  return !['', null, undefined].includes(item);
}

