프론트엔드/Typescript

[JS, TS] 랜덤 닉네임 생성 모듈 코드

순코딩 2025. 4. 12. 09:26
/**
 * 랜덤 닉네임 생성 유틸리티
 * 형용사와 명사를 조합하여 독특한 닉네임을 생성합니다.
 */

// 형용사 목록
const adjectives = [
  "행복한",
  "슬픈",
  "화난",
  "지친",
  "활기찬",
  "조용한",
  "시끄러운",
  "따뜻한",
  "차가운",
  "부드러운",
  "강한",
  "약한",
  "빠른",
  "느린",
  "밝은",
  "어두운",
  "현명한",
  "용감한",
  "겸손한",
  "정직한",
  "친절한",
  "엄격한",
  "귀여운",
  "멋진",
  "신비로운",
  "공정한",
  "냉철한",
  "신중한",
  "논리적인",
  "객관적인",
  "분석적인",
  "통찰력있는",
  "예리한",
  "진지한",
  "사려깊은",
  "정의로운",
  "합리적인",
  "균형잡힌",
  "엄정한",
  "철저한",
];

// 명사 목록
const nouns = ["배심원"];

/**
 * 랜덤 닉네임을 생성합니다.
 * @returns {string} 형용사와 명사가 조합된 랜덤 닉네임
 */
export const createRandomName = (): string => {
  // 랜덤 형용사 선택
  const randomAdjective = adjectives[Math.floor(Math.random() * adjectives.length)];

  // 랜덤 명사 선택
  const randomNoun = nouns[Math.floor(Math.random() * nouns.length)];

  // 형용사와 명사 조합
  return `${randomAdjective} ${randomNoun}`;
};

/**
 * 숫자를 포함한 랜덤 닉네임을 생성합니다.
 * @param {boolean} includeNumber 숫자 포함 여부 (기본값: false)
 * @returns {string} 랜덤 닉네임 (선택적으로 숫자 포함)
 */
export const createRandomNameWithNumber = (includeNumber: boolean = false): string => {
  const baseName = createRandomName();

  if (includeNumber) {
    // 1부터 999 사이의 랜덤 숫자 생성
    const randomNumber = Math.floor(Math.random() * 999) + 1;
    return `${baseName} ${randomNumber}`;
  }

  return baseName;
};

export default createRandomName;