@@ -24,7 +24,7 @@ function identity(arg: any): any {
24
24
}
25
25
```
26
26
27
- ` any ` ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ถ๋ช
ํ ํจ์๊ฐ ` arg ` ์ ๋ํ ๋ชจ๋ ํ์
์ ์ ๋ฌ ๋ฐ์ ์ ์๊ฒ๋์ง๋ง ์ค์ ๋ก ํจ์๊ฐ ๋ฐํํ ๋ ๊ทธ ํ์
์ด ๋ฌด์์ด์๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ์์ด๋ฒ๋ฆฝ๋๋ค. ๋ง์ฝ ์ซ์๋ฅผ ์ธ์๋ก ์ ๋ฌํ๋ฉด ์ด๋ค ํ์
์ด๋ ๋ฐํํ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
27
+ ` any ` ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ถ๋ช
ํ ํจ์๊ฐ ` arg ` ์ ๋ํ ๋ชจ๋ ํ์
์ ์ ๋ฌ ๋ฐ์ ์ ์๊ฒ๋์ง๋ง ์ค์ ๋ก ํจ์๊ฐ ๋ฐํํ ๋ ๊ทธ ํ์
์ด ๋ฌด์์ด์๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ์์ด๋ฒ๋ฆฝ๋๋ค. ๋ง์ฝ ์ซ์๋ฅผ ์ธ์๋ก ์ ๋ฌํ๋ฉด ์ด๋ค ํ์
์ด๋ ๋ฐํํ ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
28
28
29
29
๋์ ์ด๋ค ํ์
์ด ๋ฐํ๋ ๊ฒ์ธ์ง๋ฅผ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ์์ผ๋ก ์ธ์ ํ์
์ ์ ํ๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๊ฐ์ด ์๋ ํ์
์ ์ฒ๋ฆฌํ๋ ํน๋ณํ ์ข
๋ฅ์ ๋ณ์์ธ _ ํ์
๋ณ์(type variable)_ ์ ์ฌ์ฉํ ๊ฒ์
๋๋ค.
30
30
@@ -45,7 +45,7 @@ identity ํจ์์ ํ์
๋ณ์ `T` ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
45
45
let output = identity <string >(" myString" ); // ๋ฐํ ํ์
์ 'string' ์
๋๋ค.
46
46
```
47
47
48
- ์ฌ๊ธฐ์๋ ํจ์ ํธ์ถ์ ๋ํ ์ธ์ ์ค ํ๋์ธ ` T ` ๋ฅผ ` string ` ์ผ๋ก ๋ช
์์ ์ผ๋ก ์ ํ์ผ๋ฉฐ ์ธ์์๋ ` () ` ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ ` <> ` ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
48
+ ์ฌ๊ธฐ์๋ ํจ์ ํธ์ถ์ ๋ํ ์ธ์ ์ค ํ๋์ธ ` T ` ๋ฅผ ` string ` ์ผ๋ก ๋ช
์์ ์ผ๋ก ์ ํ์ผ๋ฉฐ ์ธ์์๋ ` () ` ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ ` <> ` ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
49
49
50
50
๋๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ _ ํ์
์ธ์ ์ถ๋ก (type argument inference)_ ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฆ ํจ์์ ์ ๋ฌํ๋ ์ธ์ ํ์
์ ๋ฐ๋ผ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ` T ` ๊ฐ์ ์ค์ ํฉ๋๋ค.
51
51
@@ -54,7 +54,7 @@ let output = identity("myString"); // ๋ฐํ ํ์
์ 'string' ์
๋๋ค.
54
54
```
55
55
56
56
๊บพ์ ๊ดํธ(` <> ` ) ์์ ๋ช
์์ ์ผ๋ก ํ์
์ ์ ๋ฌํ ํ์๊ฐ ์์ต๋๋ค. ์ปดํ์ผ๋ฌ๋ ๊ทธ์ ` "myString" ` ์ ๊ฐ์ ๋ณด๊ณ ` T ` ๋ฅผ ๊ทธ ํ์
์ผ๋ก ์ค์ ํฉ๋๋ค.
57
- ํ์
์ธ์ ์ถ๋ก ์ ์ฝ๋๋ฅผ ๋ ์งง๊ณ ๊ฐ๋
์ฑ ์๊ฒ ์ ์งํ๋ ์ ์ฉํ ๋๊ตฌ๊ฐ ๋ ์ ์์ง๋ง ๋ณด๋ค ๋ณต์กํ ์์ ์์๋ ์ปดํ์ผ๋ฌ๊ฐ ํ์
์ ์ถ๋ก ํ์ง ๋ชปํ๋ฉด ์์ ์์ ์์ ํ๋ ๊ฒ ์ฒ๋ผ ํ์
์ธ์๋ฅผ ๋ช
์์ ์ผ๋ก ์ ๋ฌํด์ผ ํ ์๋ ์์ต๋๋ค.
57
+ ํ์
์ธ์ ์ถ๋ก ์ ์ฝ๋๋ฅผ ๋ ์งง๊ณ ๊ฐ๋
์ฑ ์๊ฒ ์ ์งํ๋ ์ ์ฉํ ๋๊ตฌ๊ฐ ๋ ์ ์์ง๋ง ๋ณด๋ค ๋ณต์กํ ์์ ์์๋ ์ปดํ์ผ๋ฌ๊ฐ ํ์
์ ์ถ๋ก ํ์ง ๋ชปํ๋ฉด ์์ ์์ ์์ ํ๋ ๊ฒ ์ฒ๋ผ ํ์
์ธ์๋ฅผ ๋ช
์์ ์ผ๋ก ์ ๋ฌํด์ผ ํ ์๋ ์์ต๋๋ค.
58
58
59
59
# ์ ๋ค๋ฆญ ํ์
๋ณ์ (Generic Type Variables)
60
60
@@ -89,7 +89,7 @@ function loggingIdentity<T>(arg: T[]): T[] {
89
89
}
90
90
```
91
91
92
- ` loggingIdentity ` ๋ ํ์
๋งค๊ฐ ๋ณ์ ` T ` ๋ฅผ ์ธ์๋ก ๋ฐ๊ณ ` arg ` ๋ ` T ` ๋ฐฐ์ด์ด๋ฉฐ ` T ` ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค. ์ซ์ ๋ฐฐ์ด์ ์ธ์๋ก ๋๊ธฐ๋ฉด ` T ` ๊ฐ ` number ` ์ ๋ฐ์ธ๋ฉ ๋๊ธฐ ๋๋ฌธ์ ์ซ์ ๋ฐฐ์ด์ ๋ฐํํ ๊ฒ์
๋๋ค. ์ด๋ ๊ฒํ๋ฉด ๋ชจ๋ ํ์
์ด ์๋ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ ํ์
์ ์ผ๋ถ๋ก ์ ๋ค๋ฆญ ํ์
๋ณ์ ` T ` ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
92
+ ` loggingIdentity ` ๋ ํ์
๋งค๊ฐ ๋ณ์ ` T ` ๋ฅผ ์ธ์๋ก ๋ฐ๊ณ ` arg ` ๋ ` T ` ๋ฐฐ์ด์ด๋ฉฐ ` T ` ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค. ์ซ์ ๋ฐฐ์ด์ ์ธ์๋ก ๋๊ธฐ๋ฉด ` T ` ๊ฐ ` number ` ์ ๋ฐ์ธ๋ฉ ๋๊ธฐ ๋๋ฌธ์ ์ซ์ ๋ฐฐ์ด์ ๋ฐํํ ๊ฒ์
๋๋ค. ์ด๋ ๊ฒํ๋ฉด ๋ชจ๋ ํ์
์ด ์๋ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ ํ์
์ ์ผ๋ถ๋ก ์ ๋ค๋ฆญ ํ์
๋ณ์ ` T ` ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
93
93
94
94
ํน์ ๋ค์ ์์ ์ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
95
95
0 commit comments