class Dog {
constructor(readonly name: string){}
sayHello():string{
return `Dog says Hello`
}
}
class Fish {
constructor(readonly name:string){}
dive(howDeep: number):string{
return `deep number is ${howDeep}`
}
}
type Pet = Dog | Fish
function talkToPet(pet: Pet):string {
if(pet instanceof Dog) {
return pet.sayHello()
} else if(pet instanceof Fish) {
return 'fish cannot talk'
} else {
return 'nothing'
}
}
console.log(talkToPet(new Dog('진돗개')))
console.log(talkToPet(new Fish('광어')))
- 이미 선언된 타입들로 유니온을 선언해 Pet이라는 하나의 타입을 만들었다.
instanceof
를 사용해서 타입가드를 해주었고 in
, typeof
를 이용해서 타입가드를 해 줄수도 있다.
type
interface
class
연산자를 사용해서 새로운 타입을 선언 할 수 있다.