Menu
Coddy logo textTech

'?'를 사용한 선택적 매개변수

Coddy JavaScript 여정의 TypeScript 소개 섹션에 포함된 레슨. 73개 중 25번째.

때때로 특정 매개변수가 항상 필요하지 않은 함수를 만들고 싶을 때가 있습니다. TypeScript는 매개변수를 선택적(optional)으로 표시하기 위해 ? 구문을 제공하며, 이는 호출자가 함수를 호출할 때 해당 매개변수를 제공할지 여부를 선택할 수 있음을 의미합니다.

매개변수를 선택 사항으로 만들려면 매개변수 이름 뒤, 타입 어노테이션 앞에 물음표를 추가합니다:

function greet(name: string, greeting?: string): string {
  if (greeting) {
    return greeting + ", " + name;
  }
  return "Hello, " + name;
}

이 예제에서 name은 필수인 반면 greeting은 선택 사항입니다. 이 함수를 이름만 사용하여 호출하거나(greet("Alice")), 두 매개변수를 모두 사용하여 호출할 수 있습니다(greet("Alice", "Good morning")). 함수 내부에서 선택적 매개변수는 string | undefined 타입을 가지므로, 사용하기 전에 존재 여부를 확인해야 합니다.

challenge icon

챌린지

쉬움

string 타입의 username(필수)과 string 타입의 displayName(선택 사항)이라는 두 개의 매개변수를 받는 createUserProfile이라는 이름의 함수를 생성하세요. 이 함수는 명시적인 반환 타입 어노테이션과 함께 문자열을 반환해야 합니다.

두 매개변수가 모두 제공되면 함수는 "Profile: [displayName] (@[username])"을 반환해야 합니다.

username만 제공되면 함수는 "Profile: @[username]"을 반환해야 합니다.

number 타입의 price(필수)와 string 타입의 membershipLevel(선택 사항)이라는 두 개의 매개변수를 받는 calculateDiscount라는 이름의 또 다른 함수를 생성하세요. 이 함수는 명시적인 반환 타입 어노테이션과 함께 숫자를 반환해야 합니다.

두 매개변수가 모두 제공되면 함수는 10% 할인된 가격(0.9를 곱함)을 반환해야 합니다.

price만 제공되면 함수는 원래 가격을 그대로 반환해야 합니다.

다음 값으로 함수를 호출하고 결과를 출력하여 함수를 테스트하세요:

  • createUserProfile"john_doe""John Doe"로 호출
  • createUserProfile"jane_smith"만 사용하여 호출
  • calculateDiscount100"premium"으로 호출
  • calculateDiscount75만 사용하여 호출

각 결과를 위에 지정된 순서대로 별도의 줄에 출력하세요.

직접 해보기

// TODO: 여기에 코드를 작성하세요
// 적절한 타입 어노테이션을 사용하여 createUserProfile 함수를 생성하세요
// 적절한 타입 어노테이션을 사용하여 calculateDiscount 함수를 생성하세요

// 함수를 테스트하고 결과를 출력하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

TypeScript 소개의 모든 레슨

직접 연습해 보세요: 온라인 JavaScript 컴파일러