'never' 타입
Coddy JavaScript 여정의 TypeScript 소개 섹션에 포함된 레슨. 73개 중 70번째.
never 타입은 절대 발생하지 않는 값을 나타냅니다. 처음에는 혼란스럽게 들릴 수 있지만, 코드의 특정 시나리오를 생각해 보면 실제로는 매우 논리적입니다.
never 타입은 정상적으로 반환되지 않는 함수에 가장 흔히 사용됩니다.
여기에는 항상 오류를 발생시키거나 무한 루프를 포함하는 함수가 포함됩니다:
function throwError(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while (true) {
// 이 루프는 끝나지 않습니다
}
}함수가 의미 있는 값을 반환하지 않음을 나타내는 void와 달리, never는 함수가 끝 지점에 전혀 도달하지 않음을 나타냅니다. 실행이 오류 발생으로 인해 중단되거나 무한히 계속됩니다.
챌린지
쉬움항상 에러를 발생시키고 정상적으로 반환되지 않음을 보여주는 never 반환 타입을 사용하는 throwError라는 이름의 함수를 생성하세요.
이 함수는 다음을 수행해야 합니다:
string타입의message매개변수를 받습니다.- 제공된 메시지로 새로운
Error를 발생시킵니다. - 명시적인 반환 타입으로
never를 가집니다.
다음과 같은 기능을 가진 handleOperation이라는 두 번째 함수를 생성하세요:
- 두 개의 매개변수를 받습니다:
string타입의operation과number타입의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}`);
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
TypeScript 소개의 모든 레슨
직접 연습해 보세요: 온라인 JavaScript 컴파일러