Menu
Coddy logo textTech

'never' 타입

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

never 타입은 절대 발생하지 않는 값을 나타냅니다. 처음에는 혼란스럽게 들릴 수 있지만, 코드의 특정 시나리오를 생각해 보면 실제로는 매우 논리적입니다.

never 타입은 정상적으로 반환되지 않는 함수에 가장 흔히 사용됩니다.

여기에는 항상 오류를 발생시키거나 무한 루프를 포함하는 함수가 포함됩니다:

function throwError(message: string): never {
  throw new Error(message);
}

function infiniteLoop(): never {
  while (true) {
    // 이 루프는 끝나지 않습니다
  }
}

함수가 의미 있는 값을 반환하지 않음을 나타내는 void와 달리, never는 함수가 끝 지점에 전혀 도달하지 않음을 나타냅니다. 실행이 오류 발생으로 인해 중단되거나 무한히 계속됩니다.

challenge icon

챌린지

쉬움

항상 에러를 발생시키고 정상적으로 반환되지 않음을 보여주는 never 반환 타입을 사용하는 throwError라는 이름의 함수를 생성하세요.

이 함수는 다음을 수행해야 합니다:

  • string 타입의 message 매개변수를 받습니다.
  • 제공된 메시지로 새로운 Error를 발생시킵니다.
  • 명시적인 반환 타입으로 never를 가집니다.

다음과 같은 기능을 가진 handleOperation이라는 두 번째 함수를 생성하세요:

  • 두 개의 매개변수를 받습니다: string 타입의 operationnumber 타입의 value
  • operation이 "double"인 경우 value * 2를 반환합니다.
  • operation이 "half"인 경우 value / 2를 반환합니다.
  • 그 외의 다른 operation에 대해서는 "Invalid operation: [operation]" 메시지와 함께 throwError를 호출합니다.
  • 명시적인 반환 타입으로 number를 가집니다.

다음 연산들로 함수를 테스트하세요:

  • handleOperation("double", 5)를 호출하고 결과를 출력합니다.
  • handleOperation("half", 8)을 호출하고 결과를 출력합니다.
  • handleOperation("triple", 3)을 호출하고 결과를 출력합니다 (이 경우 에러가 발생합니다).

추가 테스트 케이스를 생성하세요:

  • handleOperation("double", 15)를 호출하고 결과를 출력합니다.
  • handleOperation("half", 20)을 호출하고 결과를 출력합니다.

직접 해보기

// TODO: 여기에 코드를 작성하세요
// never 반환 타입을 가진 throwError 함수를 생성하세요
// number 반환 타입을 가진 handleOperation 함수를 생성하세요

// try-catch 블록을 사용하여 함수를 테스트하세요
try {
    console.log(handleOperation("double", 5));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("half", 8));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("triple", 3));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("double", 15));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}

try {
    console.log(handleOperation("half", 20));
} catch (error) {
    console.log(`Error: ${(error as Error).message}`);
}
quiz icon실력 점검

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

TypeScript 소개의 모든 레슨

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