function showString(a: string): void {
  console.log(a);
}

function showString2(a: string, b: string, c: string): void {
  console.log(a, b, c);
}

// 3개로 처리
function showString3(a: string, b?: string, c?: string): void {
  if (b && c) {
    console.log(a, b, c);
  } else {
    console.log(a);
  }
}

showString("A");
showString2("A", "B", "C");
showString2("A", "B"); // 오류는 아닌데 원하지 않는 기능이라서 오류

// 함수 오버로딩
function showStringOver(a: string): void;
function showStringOver(a: string, b: string, c: string): void;
// 오버로딩 규현체
function showStringOver(a: string, b?: string, c?: string): void {
  if (b && c) {
    console.log(a, b, c);
  } else {
    console.log(a);
  }
}

showStringOver("A");
showStringOver("A", "B", "C");
// showStringOver("A", "B");// 오버로딩 정의에 없음