type predicate (타입 프레디케이트)
type predicate는 TypeScript에서 특정 타입에 대한 동적인 체크를 수행하는 함수입니다.
이 함수는 입력된 값이 특정 타입인지 여부를 불리언으로 반환합니다.
이를 통해 TypeScript는 실행 시간에 변수의 타입을 검사할 수 있게 됩니다.
단순한 숫자 타입 체크
function isNumber(input: any): input is number{
return typeof input === 'number';
}
console.log(isNumber(10));
- 'isNumber' 함수는 입력값이 숫자인지 여부를 검사하는 타입 프레디케이트입니다.
- 'input is number' 형태는 TypeScript에게 이 함수가 실행되면 'input'이 'number' 타입으로 판명된다는 것을 알려줍니다.
Boolean 반환 타입으로 일반적인 타입 체크
function isNumberRetBool(input: any): boolean{
return typeof input === 'number';
}
let number: any = 5;
if(isNumberRetBool(number)){
number;
}
- 'isNumberRetBool' 함수는 입력값이 숫자인지를 불리언으로 반환합니다.
- 이 함수를 사용하여 'number' 변수의 타입을 체크하고, 'number' 변수를 안전하게 사용할 수 있습니다.
객체의 속성을 기반으로 한 인터페이스 타입 체크
interface Doge{
name: string;
age: number;
}
interface Cat{
name: string;
breed: string;
}
type DogeOrCat = Doge | Cat;
function isDoge(animal: DogeOrCat): animal is Doge{
return (animal as Doge).age !== undefined;
}
const doge: DogeOrCat = Math.random() > 0.5 ? {
name: '도지',
age: 20,
} : {
name: '오리',
breed: '코리안 길냥이'
}
if(isDoge(doge)){
doge; //doge는 Doge 타입으로 추론됩니다.
}else{
doge; //doge는 Cat 타입으로 추론됩니다.
}
- 'isDoge' 함수는 'DogeOrCat' 타입의 객체가 'Doge'인지를 검사합니다.
- 함수의 반환 타입 'animal is Doge'는 TypeScript에게 이 함수를 통해 'DogeOrCat' 타입이 'Doge'로 추론되어야 한다는 것을 알려줍니다.
- 따라서 'isDoge' 함수를 사용하면 'doge' 객체의 타입이 조건에 따라 정확하게 추론됩니다.
TypeScript는 이러한 유형의 타입 검사를 활용하여 코드 안정성을 높이고, 코드의 의도를 더 명확하게 전달할 수 있도록 합니다.
'Backend > TypeScript' 카테고리의 다른 글
| JavaScript heap out of memory 에러 해결하기 (0) | 2024.11.12 |
|---|---|
| [TypeScript] Type vs Interface (0) | 2024.01.10 |
| [TypeScript] Statement와 Expression(문장과 표현식) (0) | 2024.01.06 |
| [TypeScript] Overloading 오버로딩 (0) | 2023.12.30 |
| [TypeScript] 함수 시그니처 타입으로 선언하기 (0) | 2023.12.22 |