
타입을 좁히기 위한 과정
타입을 검사할 때 유용한 것들
아래와 같이 작성해 type을 검사하고 처리하는 용도로 코드를 더 안전하게 작성할 수 있다.
function print(value: number | string): string {
if (typeof value === 'number') {
return String(value)
}
if (typeof value === 'string') {
return value
}
return ''
}
해당 속성이 객체에 존재하면 true를 반환하는 연산자
interface Dog {
name: string
bark(): '멍멍'
}
interface Cat {
name: string
meow(): '냐옹'
}
function sayAnimal(animal: Dog | Cat) {
if ('bark' in animal) {
animal.bark()
console.log(animal.name, animal.bark)
}
if ('meow' in animal) {
animal.meow()
console.log(animal.name, animal.meow)
}
}
해당 인스턴스가 대상에서 생성된 인스턴스일 경우 true 반환
// Date타입만 반환하기 위해 체크
function getDate(date: Date | string): Date {
if (date instanceof Date) {
return date
}
return new Date(date)
}
is~(매개변수): 매개변수 is 타입 { }
function isDate(date: Date | string): date is Date {
return date instanceof Date
// Date타입이면 true 반환, 아니면 false반환
}
function getDate(date: Date | string): Date {
// 이렇게 사용가능
if (isDate(date)) {
return date
}
return new Date(date)
}