[TypeScript] ๐Ÿณ 2.4 ์—ฐ์Šต๋ฌธ์ œ

์กฐ์ค€ํ˜•ยท2021๋…„ 12์›” 6์ผ
0

TypeScript

๋ชฉ๋ก ๋ณด๊ธฐ
9/11
post-thumbnail

๐Ÿณ 2.4 ์—ฐ์Šต๋ฌธ์ œ

๐ŸŒ ๋ฌธ์ œ

๋‘ ์ปค์Šคํ…€ํƒ€์ž…์ด Dog์™€ Fish๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž.

  • ํด๋ž˜์Šค๋กœ ์„ ์–ธํ•˜๊ณ  name ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€.

  • Dogํด๋ž˜์Šค๋Š” sayHello(): string ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง

  • Fishํด๋ž˜์Šค๋Š” dive(howDeep: number): string๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง

  • ํƒ€์ž… Pet์„ ์ด์šฉํ•ด Dog์™€ Fish์˜ ์œ ๋‹ˆ์˜จ ํƒ€์ž…์œผ๋กœ ์„ ์–ธ.

  • talkToPet(pet: Pet):stringํ•จ์ˆ˜๋Š” ํƒ€์ž…๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•ด Dogํด๋ž˜์Šค๋ฉด sayHello, Fish๋ฉด 'Fish cannot talk, sry'๋ฅผ ์ถœ๋ ฅ

  • talkToPet()์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ Dog, Fish, ๊ทธ์™ธ ๊ฐ์ฒด๋กœ ์ด 3๋ฒˆ ํ˜ธ์ถœํ•จ.

๐ŸŒ ์ •๋‹ต

// 2_30.ts
class Dog{
    constructor(readonly name: string){};
    
    sayHello(): string{
        return 'Dog Say Hello!'
    }
}

class Fish{
	constructor(readonly name: string){};
    
    div(howDeep: number): string{
        return `Diving ${howDeep} feat`;
    }
}

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, sry';
    }
}

const myDog = new Dog("Sammy");
const myFish = new Fish("Nimo");

console.log(talkToPet(myDog));
console.log(talkToPet(myFish));
profile
๊นƒํ—ˆ๋ธŒ : github.com/JuneHyung

0๊ฐœ์˜ ๋Œ“๊ธ€