์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค.
์ค๋์ TS์์ ํด๋์ค ์์ extends์ implements๊ฐ ์๊ฐ ํท๊ฐ๋ ค์ ์ ํํ ๊ธฐ์ตํ๊ธฐ ์ํด ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค.
๋ฐ๋ก ์์ํ ๊ฒ์~
Extends
์์๋ฐ๊ณ ์ ํ๋ ๋ถ๋ชจ ํด๋์ค๋ฅผ ๋ช ์ํ๋ ๊ฒ.
์ฆ, extends์ ์ํ๋ ํด๋์ค๋ฅผ ๋ช ์ํ๋ฉด ํด๋น ํด๋์ค์ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ๋ฐ๋ก ๊ตฌํํ์ง ์์๋ ์ธ์คํด์ค์์ ์์ ๋กญ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
์ฝ๊ฒ ๋งํด "๋ถ๋ชจ๊ฐ ๊ฐ์ง ๊ฑฐ ๋ ๋ง๋๋ก ์จ๋ ๋ผ~" ๋ผ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
์๋์ ๊ฐ์ด ๋ถ๋ชจ ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ค๋๋ค.
class Parent {
public lastName: string = "An";
public speakKorean() {
console.log("์๋
ํ์ธ์");
}
public eatWithChopsticks() {
console.log("์ ๊ฐ๋ฝ์ผ๋ก ๋จน๊ธฐ");
}
}
์์ ํด๋์ค๋ฅผ ๋ง๋ค์ด ์๋์ ๊ฐ์ด extends๋ฅผ ํตํด Parent๋ฅผ ์์ ๋ฐ์์ค๋๋ค.
class Child extends Parent {}
child ์ธ์คํด์ค๋ฅผ ์์ฑํด์ฃผ๋ฉด ์๋์ ๊ฐ์ด ๋ถ๋ชจ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
let child = new Child();
console.log(child.lastName); //An
child.speakKorean(); //์๋
ํ์ธ์
child.eatWithChopsticks(); //์ ๊ฐ๋ฝ์ผ๋ก ๋จน๊ธฐ
Implements
๋ฏธ๋ฆฌ ์ถ์ํ ๋ ์ธํฐํ์ด์ค๋ฅผ ์ฑํํ์ฌ ์ฌ์ฉํ๋ ๊ฒ
์์(extends)์ ๋ค๋ฅด๊ฒ implements๋ก ์ด๋ค ์ธํฐํ์ด์ค๋ฅผ ์ฑํํ๋ฉด ์ถ์ํ ๋ ๋ฉ์๋๋ ํ๋กํผํฐ๋ฅผ ๋ฐ๋์ ๊ตฌํํด์ฃผ์ด์ผ ํฉ๋๋ค.
์ฝ๊ฒ ๋งํ๋ฉด "ํด๋น ํด๋์ค๋ ์ด ์ธํฐํ์ด์ค ๋ชจ์์ด๋๊น ๋ฐ๋์ ์ด ์กฐ๊ฑด์ ๊ฐ์ ธ์ผ ํด!" ๋ผ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
์๋์ ๊ฐ์ด ์ฌ๋์ด๋ผ๋ฉด ๋ฐ๋์ ๊ฐ์ ธ์ผ ํ ๋ฉ์๋์ ํ๋กํผํฐ๋ฅผ ์ ์ํด ๋์ต๋๋ค.
interface Person {
name: string;
think(): void;
walk(): void;
eat(): void;
}
Person์ ์ Child ํด๋์ค์ ์ฑํํ๋ฉด ์๋์ ๊ฐ์ด Child ์๋์ Person ํํ์ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ผ๊ณ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
Person์ ์ ์๋ ๋ฉ์๋์ ํ๋กํผํฐ๋ฅผ ์ง์ ๊ตฌํํด ์ค๋๋ค.
class Child implements Person {
name: string = "Fomagran";
think(): void {
console.log("์๊ฐํ๊ธฐ");
}
walk(): void {
console.log("๊ฑท๊ธฐ");
}
eat(): void {
console.log("๋จน๊ธฐ");
}
}
์๋์ ๊ฐ์ด ๊ตฌํ๋ ๋ฉ์๋์ ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
const child = new Child()
console.log(child.name); // Fomagran
child.think() //์๊ฐํ๊ธฐ
child.walk() //๊ฑท๊ธฐ
child.eat() //๋จน๊ธฐ
์ค๋์ ์ด๋ ๊ฒ extends์ implements์ ์ฐจ์ด์ ์ ๋ํด ์์๋ณด์๋๋ฐ์.
extends๋ ์ด๋ฏธ ๊ตฌํ๋ ๋ฉ์๋์ ํ๋กํผํฐ๋ฅผ ํธํ๊ฒ ์ฌ์ฉํ ๋ ์ฐ๋ฉด ์ ์ฉํ ๊ฑฐ ๊ฐ๊ณ , implements๋ ์ด๋ ํ ์กฐ๊ฑด์ ๊ฐ์ ํ ๋ ์ฌ์ฉํ๋ฉด ์ ์ฉํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
ํน์๋ผ๋ ํ๋ฆฐ ์ ์ด ์๊ฑฐ๋ ๊ถ๊ธํ์ ์ ์ด ์๋ค๋ฉด ์๋ ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!
'๐ Language > Typescript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TS] ํ์ ์คํฌ๋ฆฝํธ(TypeScript)๋? (feat. ์จ์ผํ๋ ์ด์ ) (3) | 2022.03.08 |
---|
๋๊ธ