TypeScript에서 switch 문을 사용하여 다양한 데이터 타입을 비교하는 방법에 대해 알아보겠습니다. switch 문은 특정 조건에 따라 다른 동작을 수행할 수 있도록 선택할 수 있게 해주는 구문입니다. 그런데 JavaScript와 TypeScript에서 switch 문을 사용할 때 데이터 타입 비교에 주의를 기울여야 합니다.
숫자와 문자열 비교
switch 문에서 숫자나 문자열을 비교할 때는 ===
(일치 연산자)를 사용하여 정확한 타입과 값이 일치하는지 확인해야 합니다. TypeScript는 타입과 값이 일치하지 않으면 컴파일러 오류를 발생시키므로 안전하게 비교할 수 있습니다.
let numOrString: number | string = "hello";
switch (numOrString) {
case 1:
console.log("숫자 1입니다.");
break;
case "hello":
console.log("문자열 'hello'입니다.");
break;
default:
let check: never = numOrString;
}
위의 예제에서 numOrString
변수는 숫자나 문자열을 가질 수 있습니다. switch 문에서 숫자 1과 문자열 ‘hello’을 각각 비교하여 해당하는 동작을 수행하고 있습니다.
객체 비교
객체를 비교할 때는 일치 연산자인 ===
를 사용하여 참조값이 일치하는지 확인해야 합니다. 예를 들어, 다음과 같이 객체의 속성값에 따라 switch 문을 사용할 수 있습니다.
type Shape = { kind: "circle"; radius: number } | { kind: "square"; sideLength: number };
function getArea(shape: Shape): number {
switch (shape.kind) {
case "circle":
return Math.PI * shape.radius ** 2;
case "square":
return shape.sideLength ** 2;
default:
let check: never = shape;
}
}
위의 예제에서 Shape
타입은 circle
또는 square
라는 속성을 가진 객체를 가질 수 있습니다. switch 문에서는 kind
속성에 따라 해당하는 동작을 수행하고 있습니다.
enum 비교
enum 타입을 사용하여 switch 문에서 열거형 값을 비교할 수도 있습니다. 예를 들어, 다음과 같이 enum을 정의하고 사용할 수 있습니다.
enum Direction {
Up,
Down,
Left,
Right,
}
function move(direction: Direction): void {
switch (direction) {
case Direction.Up:
console.log("위쪽으로 이동");
break;
case Direction.Down:
console.log("아래쪽으로 이동");
break;
case Direction.Left:
console.log("왼쪽으로 이동");
break;
case Direction.Right:
console.log("오른쪽으로 이동");
break;
default:
let check: never = direction;
}
}
위의 예제에서 Direction
enum을 사용하여 switch 문에서 각각의 방향에 따라 이동 동작을 수행하고 있습니다.
이와 같이 TypeScript에서 switch 문을 사용하여 다양한 데이터 타입을 비교하고 해당하는 동작을 수행할 수 있습니다. 이는 코드의 가독성을 높이고 안전한 타입 체크를 할 수 있는 장점을 가지고 있습니다.
이상으로 TypeScript에서 switch 문을 다양한 데이터 타입과 함께 사용하는 방법에 대해 알아보았습니다.
참고 문헌: TypeScript 공식 문서