|
1 |
| -// interface๋ฅผ ์ ์ฌ์ฉํ ๊น ๋จ์ํ Type์ ์ง์ ํ๊ธฐ ์ํจ์ธ๊ฐ? |
2 |
| -// ๊ทธ๋ ๋ค๋ฉด type Person๊ณผ ๊ฐ์ด ์ ์ํ๋ฉด ๋ฌธ์ ์์ง ์์๊ฐ? |
3 |
| -// ์ด๋ ๊ฒ์ฌ์ฉ์ ํด๋ ๋ฌธ์ ์์ด ๋์์ํ๋ค. ํ์ง๋ง ๋ถ๋ช
ํ ์ฐจ์ด์ ์ด ์๋ค. |
4 |
| -// type Person = { |
5 |
| -// name: string; |
6 |
| -// age: number; |
7 |
| - |
8 |
| -// greet(phrase: string): void; |
9 |
| -// } |
10 |
| - |
11 |
| -// ๋ถ๋ช
ํ ์ฐจ์ด์ |
12 |
| -// type์ ์ฌ์ฉํด์ ์ ๋์จํ์
๊ณผ ๊ฐ์ด ์ปค์คํ
ํ๋ฉด ๋ถ๋ช
์ ์ฐํ ์๋ ์์ง๋ง ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์ ๋ช
ํํด์ง๋ค๋ ์ฅ์ ์ด ์๋ค. |
13 |
| -// - ์ธํฐํ์ด์ค๋ก ์ ์ํ๋ฉด ๊ฐ์ฒด์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ ์ ํ๋ค๋ ๊ฒ์ ๋ช
ํํ๊ฒ ๋ํ๋ผ ์ ์๋ค. ๋ฐ๋ผ์ ๊ฐ์ฒด์ ํ์
์ผ๋ก ์ ์, ์ปค์คํ
ํ์
์ ์ฌ์ฉํ๊ธฐ ๋ณด๋ค๋ ์ธํฐํ์ด์ค๋ฅผ ์์ฃผ ์ฌ์ฉํ๋ค. |
14 |
| -// - ํด๋์ค ์์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ ์๋ค. ์ฆ, ํด๋์ค๋ก ์ฌ์ฉํ๋ ๋ฌธ๋ฒ์ผ๋ก๋ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. ์ฆ, interface๋ก extends, override์ ๊ฐ์ด ์์ก ๊ตฌ์กฐ๋ก ๊ณต์ ์ฑ์ ํ๋ณดํ ์ ์์ผ๋ฉฐ ํด๋์ค์ธ implements๋ฅผ ์ฌ์ฉํด์ ํด๋์ค์ ์ฐ๋, ํผ์ฉ์ด ๊ฐ๋ฅํ๋ค. |
| 1 | +interface Named { |
| 2 | + readonly name: string; |
| 3 | +} |
15 | 4 |
|
16 |
| -// ๋ฏธ๋ฌํ ์ฐจ์ด์ |
17 |
| -// |
18 |
| -interface GreetAble { |
19 |
| - name: string; |
| 5 | +interface GreetAble extends Named { |
20 | 6 | greet(phrase: string): void;
|
21 | 7 | }
|
22 | 8 |
|
23 | 9 | class Person implements GreetAble {
|
24 |
| - name: string; |
| 10 | + name: string; //์ฃผ์ ์ฒ๋ฆฌํ๋ฉด error๋ฐ์ |
25 | 11 | age: number;
|
26 | 12 | constructor(n: string, N: number) {
|
27 |
| - this.name = n; |
| 13 | + this.name = n; // error ts(2339): name์ด Person์์ ๊ตฌํ๋์ง ์์๋ค๊ณ error |
| 14 | + // ๊ทธ๋ ๋ค๋ฉด ์ name๊ณผ ๊ด๋ จ๋ GreatAble์ ์์ ๋ฐ๊ณ ์๋๋ฐ ์๋ฌ๊ฐ ๋ฐ์ํ ๊น? |
| 15 | + // ์ด์ ๋ GreetAble์์ ์์๋ฐ์ Named์ ํ๋ ๋ณ์๋ readonly๋ก ํ์์ ์ผ๋ก class์์ name ์์ฑ์ ๋ฐ๋์ ํฌํจ์ ํด์ผํ๋ค. |
| 16 | + // ๋ค์ ํด๋์ค์ ๊ดํด์ ์๊ธฐ์ํค์๋ฉด class๋ ์ฒญ์ฌ์ง์ด๋ค. interface๋ abstract์๋ ๋ฌ๋ฆฌ ๊ฐํ์ฑ์ด ์์ง๋ง |
| 17 | + // implements์ extends์ฐจ์ด |
| 18 | + // extends๋ ํด๋์ค์์ ํด๋์ค๋ก ์์์ ์ค ๋ ์ด๊ณ implements๋ ์ธํฐํ์ด์ค๋ฅผ ํด๋์ค๋ก ๋ช
์ธ์๋ฅผ ๋ฐ์ ์ฌ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค. ์ ๋ฆฌํ์๋ฉด |
| 19 | + // extends๋ ํด๋์ค ๋๋ ์ธํฐํ์ด์ค ๊ฐ์ ์์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ฉฐ ์์ ํด๋์ค๋ ์ธํฐํ์ด์ค์ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์์๋ฐ์ ์ฌ์ฉํ ์ ์๋ค. |
| 20 | + // implements๋ ํด๋์ค๊ฐ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋๋ก ๊ฐ์ ํ๋ฉฐ ์ธํฐํ์ด์ค์์ ์ ์๋ ๋ชจ๋ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํ๋ค. |
28 | 21 | this.age = N;
|
29 | 22 | }
|
30 | 23 | greet(phrase: string): void {
|
|
0 commit comments