[Language/TypeScripts] ์์
2023. 7. 27. 13:51ใ๐ค Language/TypeScript
์ ์: ํด๋์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ๋ ๊ฐ๋ ์ผ๋ก, ๊ธฐ์กด ํด๋์ค์ ์์ฑ/๋งค์๋๋ฅผ ๋ฌผ๋ ค๋ฐ์ ์๋ก์ด ํด๋์ค๋ฅผ ์ ์ํ ์ ์์.
extends ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํจ.
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
makeSound() {
console.log('๋๋ฌผ ์๋ฆฌ~');
}
}
class Dog extends Animal {
age: number;
constructor(name: string) {
super(name);
this.age = 5;
}
makeSound() {
console.log('๋ฉ๋ฉ!'); // ๋ถ๋ชจ์ makeSound ๋์๊ณผ ๋ฌ๋ผ์!
}
eat() { // Dog ํด๋์ค๋ง์ ์๋ก์ด ํจ์ ์ ์
console.log('๊ฐ์์ง๊ฐ ์ฌ๋ฃ๋ฅผ ๋จน์ต๋๋ค.');
}
}
class Cat extends Animal { // Animal๊ณผ ๋ค๋ฅผ๊ฒ ํ๋๋ ์์ด์!
}
const dog = new Dog('๋๋ ์ด');
dog.makeSound(); // ์ถ๋ ฅ: ๋ฉ๋ฉ!
const cat = new Cat('์ผ์น์ด');
cat.makeSound(); // ์ถ๋ ฅ: ๋๋ฌผ ์๋ฆฌ~
- Animal Class: ๋ถ๋ชจํด๋์ค, Dog class: ์์ํด๋์ค
- super: ์์ํด๋์ค๊ฐ ๋ถ๋ชจํด๋์ค๋ฅผ ์ฐธ์กฐํ ๋ ์ฌ์ฉ
- ์์ํด๋์ค๊ฐ ๋ถ๋ชจํด๋์ค์ ์์ ๊ฐ์ ๊ฒฝ์ฐ ์์ฑ์ ์๋ต ๊ฐ๋ฅ.
- Dog classdpt makeSound()method๋ฅผ ์๋กญ๊ฒ ์ ์ํ๋๋ฐ ์ด๋ฅผ overriding์ด๋ผ ํจ.
์๋ธํ์ , ์ํผํ์
- ์ํผํ์ : ์๋ธํ์ ์ ๊ฒ๋ค์ ์ฌ์ฉํ ์ ์์. ์ ์์ ์์ Animal์ด ์ด์ ํด๋น. any ์ญ์ ์ํผํ์
- ์๋ธํ์ : ์ํผํ์ ์ ๊ฒ๋ค์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์. ์ ์์ ์์ Dog, Cat์ด ํด๋น.
upcasting/downcasting
- upcasting: ์๋ธํ์
์ ์ํผํ์
์ผ๋ก ๋ณํํ๋ ๊ฒ.
let dog: Dog = new Dog('๋์์ด'); let animal: Animal = dog; // upcasting ๋ฐ๋! animal.eat(); // ์๋ฌ. ์ํผํ์ (Animal)์ผ๋ก ๋ณํ์ด ๋์ด eat ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ด์!
- downcasting: ์ํผํ์
์ ์๋ธํ์
์ผ๋ก ๋ณํํ๋ ๊ฒ.
let animal: Animal; animal = new Dog('๋์์ด');
let realDog: Dog = animal as Dog;
realDog.eat(); // ์๋ธํ์
(Dog)๋ก ๋ณํ์ด ๋์๊ธฐ ๋๋ฌธ์ eat ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ฃ !
```
Reference
'๐ค Language > TypeScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Language/TypeScript] ์ธํฐํ์ด์ค (0) | 2023.07.27 |
---|---|
[Language/TypeScript] ์ถ์ ํด๋์ค (0) | 2023.07.27 |
[Language/Typescript] ํด๋์ค (0) | 2023.07.27 |
[Language/TypeScript] ์ ํธ๋ฆฌํฐ ํ์ (0) | 2023.07.26 |
[Language/TypeScript] object literal (0) | 2023.07.26 |