[typescript] 타입 가드 함수와 다른 타입스크립트 기능의 조합
타입스크립트는 정적 타입을 가진 자바스크립트의 확장된 언어로, 타입 가드 함수를 사용하여 변수의 타입을 좁히는 기능을 제공합니다. 이 기능은 조건문, 사용자 정의 타입 가드 함수, instanceof 연산자 등을 사용하여 구현할 수 있습니다.
타입 가드 함수란?
타입 가드 함수는 특정 조건을 만족할 때 해당 변수의 타입을 좁혀주는 함수를 말합니다. 이를 통해 코드 내에서 타입 안전성을 확보할 수 있습니다.
아래는 타입스크립트에서의 타입 가드 함수의 간단한 예시입니다.
function isNumber(value: any): value is number {
return typeof value === 'number';
}
let x: any = 10;
if (isNumber(x)) {
console.log(x + 5);
}
타입 가드 함수와 조건부 타입의 조합
타입 가드 함수와 조건부 타입을 조합하여 더욱 강력한 타입 추론을 할 수 있습니다. 예를 들어, 다음과 같이 조건부 타입을 사용하여 null 또는 undefined를 제거하는 기능을 구현할 수 있습니다.
type NonNullable<T> = T extends null | undefined ? never : T;
function removeNullable(value: string | null | undefined): NonNullable<typeof value> {
if (value === null || value === undefined) {
throw new Error('Value cannot be null or undefined');
}
return value;
}
let result = removeNullable('Hello, TypeScript!');
console.log(result.toLowerCase());
타입 가드 함수와 추상 클래스/인터페이스의 조합
타입 가드 함수는 추상 클래스나 인터페이스와 함께 사용하여 이러한 추상화된 타입에 대한 구체적인 타입을 도출하는 데에도 유용하게 사용될 수 있습니다.
interface Animal {
move(): void;
}
class Dog implements Animal {
move() {
console.log('Running');
}
bark() {
console.log('Woof! Woof!');
}
}
class Bird implements Animal {
move() {
console.log('Flying');
}
chirp() {
console.log('Chirp! Chirp!');
}
}
function isDog(animal: Animal): animal is Dog {
return (animal as Dog).bark !== undefined;
}
function moveAnimal(animal: Animal) {
if (isDog(animal)) {
animal.move();
} else {
console.log('Cannot determine how to move the animal');
}
}
let dog = new Dog();
let bird = new Bird();
moveAnimal(dog);
moveAnimal(bird);
이렇게 타입 가드 함수는 타입스크립트에서 다양한 곳에서 활용될 수 있으며, 다른 타입스크립트 기능과 함께 조합하여 보다 안전하고 효율적인 코드를 작성할 수 있게 도와줍니다.
위의 예제들을 통해 타입 가드 함수와 다양한 타입스크립트 기능을 함께 사용하는 방법에 대해 알아보았습니다. 이러한 기능들을 적절히 조합하여 타입 안전성을 확보하고 가독성이 높은 코드를 작성하는 데에 활용해보시기 바랍니다.