๐ ํ์ ์ถ๋ก : ๋ช ์์ ํ์ ์ ์ธ ์ค์ด๊ธฐ ๐ฏ

์๋ ํ์ธ์, ์ฌ๋ฌ๋ถ! ์ค๋์ TypeScript์ ๊ฟํ ์ค ํ๋์ธ 'ํ์ ์ถ๋ก '์ ๋ํด ์์๋ณผ ๊ฑฐ์์. ์ด๊ฑฐ ์ง์ง ๋๋ฐ์ธ ๊ฑฐ ์์์ฃ ? ๐ ํ์ ์ถ๋ก ์ ์ ๋๋ก ํ์ฉํ๋ฉด, ์ฝ๋๊ฐ ํจ์ฌ ๊น๋ํด์ง๊ณ ๊ฐ๋ฐ ์๋๋ ์ฅ์ฅ ์ฌ๋ผ๊ฐ ๊ฑฐ์์. ๋ง์น ์ฌ๋ฅ๋ท์์ ์ฌ๋ฌ๋ถ์ ์ฌ๋ฅ์ด ๋น์ ๋ฐํ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ฃ ! ใ ใ ใ
๐ค ์ ๊น๋ง์! ํ์ ์ถ๋ก ์ด ๋ญ์ฃ ?
ํ์ ์ถ๋ก ์ TypeScript๊ฐ ์ฌ๋ฌ๋ถ ๋์ ๋ณ์๋ ํจ์์ ํ์ ์ ์์์ ํ์ ํ๋ ๋ฅ๋ ฅ์ด์์. ๋ง์น ์ฌ๋ฌ๋ถ์ด ์ฌ๋ฅ๋ท์์ ๋ค๋ฅธ ์ฌ๋์ ์ฌ๋ฅ์ ๋ณด๊ณ "์, ์ด ์ฌ๋ ์ง์ง ์ค๋ ฅ์๊ตฌ๋!"๋ผ๊ณ ๋๋ผ๋ ๊ฒ์ฒ๋ผ์.
์, ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ํ์ ์ถ๋ก ์ ์ธ๊ณ๋ก ๋ค์ด๊ฐ๋ณผ๊น์? ์ค๋น๋์ จ๋์? ๊ณ ๊ณ ์ฝ~ ๐โโ๏ธ๐จ
๐ง ํ์ ์ถ๋ก ์ ๊ธฐ๋ณธ
TypeScript๋ ์ฌ๋ฌ๋ถ์ด ์๊ฐํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋๋ํด์. ๋ณ์๋ฅผ ์ ์ธํ ๋ ํ์ ์ ๋ช ์ํ์ง ์์๋, TypeScript๋ ๊ทธ ๋ณ์์ ํ ๋น๋ ๊ฐ์ ๋ณด๊ณ ํ์ ์ ์ถ๋ก ํ ์ ์์ด์. ์ด๊ฒ ๋ฐ๋ก ํ์ ์ถ๋ก ์ ๊ธฐ๋ณธ์ด์์!
์๋ฅผ ๋ค์ด๋ณผ๊น์?
let name = "๊น์ฝ๋ฉ";
let age = 25;
let isStudent = true;
์ด ์ฝ๋์์ TypeScript๋ ๋ค์๊ณผ ๊ฐ์ด ํ์ ์ ์ถ๋ก ํด์:
- name์ string ํ์
- age๋ number ํ์
- isStudent๋ boolean ํ์
์ด๋์? ๊ฐ๋จํ์ฃ ? ์ด๋ ๊ฒ TypeScript๊ฐ ์์์ ํ์ ์ ์ถ๋ก ํด์ฃผ๋๊น, ์ฐ๋ฆฌ๋ ์ผ์ผ์ด ํ์ ์ ๋ช ์ํ์ง ์์๋ ๋ผ์. ์ด๊ฒ ๋ฐ๋ก ํ์ ์ถ๋ก ์ ๋งค๋ ฅ์ด์์! ๐
๐ก ๊ฟํ: ํ์ ์ถ๋ก ์ ์ ํ์ฉํ๋ฉด, ์ฝ๋๊ฐ ํจ์ฌ ๊ฐ๊ฒฐํด์ง๊ณ ๊ฐ๋ ์ฑ๋ ์ข์์ ธ์. ๋ง์น ์ฌ๋ฅ๋ท์์ ์์ ์ ์ฌ๋ฅ์ ๊ฐ๊ฒฐํ๊ฒ ์๊ฐํ๋ ๊ฒ์ฒ๋ผ์!
ํ์ง๋ง ์ฃผ์ํ ์ ๋ ์์ด์. ํ์ ์ถ๋ก ์ด ํญ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋๋ก ๋์ํ๋ ๊ฑด ์๋์์. ๋๋ก๋ ๋ช ์์ ์ผ๋ก ํ์ ์ ์ ์ธํด์ผ ํ ๋๋ ์์ฃ . ๊ทธ๋ด ๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ๊ฑฑ์ ๋ง์ธ์, ์ด์ด์ ์์ธํ ์์๋ณผ ๊ฑฐ์์!
์ด ๊ทธ๋ฆผ์ ๋ณด๋ฉด ํ์ ์ถ๋ก ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ด ํ๋์ ๋ค์ด์ค์ฃ ? ๋ณ์๋ฅผ ์ ์ธํ๋ฉด TypeScript๊ฐ ์์์ ํ์ ์ ์ถ๋ก ํด์ฃผ๋ ๊ฑฐ์์. ์์ ํธ๋ฆฌํ์ฃ ? ใ ใ ใ
์, ์ด์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์์์ผ๋ ๋ ๊น์ด ๋ค์ด๊ฐ๋ณผ๊น์? ๋ค์ ์น์ ์์๋ ์ข ๋ ๋ณต์กํ ์ํฉ์์์ ํ์ ์ถ๋ก ์ ๋ํด ์์๋ณผ ๊ฑฐ์์. ์ค๋น๋์ จ๋์? Let's go! ๐
๐งฉ ๋ณต์กํ ์ํฉ์์์ ํ์ ์ถ๋ก
์, ์ด์ ์ข ๋ ๋ณต์กํ ์ํฉ์ ์ดํด๋ณผ๊น์? ์ค์ ๊ฐ๋ฐํ ๋๋ ๋จ์ํ ๋ณ์ ์ ์ธ๋ณด๋ค๋ ๋ ๋ณต์กํ ์ํฉ์ด ๋ง์ด ๋ฐ์ํ๊ฑฐ๋ ์. ๋ง์น ์ฌ๋ฅ๋ท์์ ๋ค์ํ ์ฌ๋ฅ์ ๊ฐ์ง ์ฌ๋๋ค์ ๋ง๋๋ ๊ฒ์ฒ๋ผ ๋ง์ด์์! ๐
1. ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด์ ํ์ ์ถ๋ก
๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ฅผ ์ ์ธํ ๋๋ TypeScript๋ ํ์ ์ ์ถ๋ก ํ ์ ์์ด์. ์ด๋ป๊ฒ ํ๋์ง ๋ณผ๊น์?
let fruits = ["์ฌ๊ณผ", "๋ฐ๋๋", "์ค๋ ์ง"];
let person = { name: "๊น์ฝ๋ฉ", age: 25, isStudent: true };
์ด ๊ฒฝ์ฐ, TypeScript๋ ๋ค์๊ณผ ๊ฐ์ด ํ์ ์ ์ถ๋ก ํด์:
- fruits๋ string[] ํ์ (๋ฌธ์์ด ๋ฐฐ์ด)
- person์ { name: string; age: number; isStudent: boolean; } ํ์
์์ฐ! ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ๊ตฌ์กฐ๋ฅผ ๋ณด๊ณ ์์์ ํ์ ์ ์ถ๋ก ํ๋ค์. ์ด๊ฑฐ ์์ ํธ๋ฆฌํ์ง ์๋์? ใ ใ ใ
2. ํจ์์ ๋ฐํ ํ์ ์ถ๋ก
ํจ์๋ฅผ ์์ฑํ ๋๋ TypeScript๋ ๋ฐํ ํ์ ์ ์ถ๋ก ํ ์ ์์ด์. ํ๋ฒ ๋ณผ๊น์?
function add(a: number, b: number) {
return a + b;
}
let result = add(5, 3);
์ด ๊ฒฝ์ฐ, TypeScript๋ ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ก ํด์:
- add ํจ์์ ๋ฐํ ํ์ ์ number
- result ๋ณ์์ ํ์ ๋ number
ํจ์์ ๋ด์ฉ์ ๋ณด๊ณ ๋ฐํ ํ์ ์ ์ถ๋ก ํ๋ ๊ฑฐ์ฃ . ์ด๋ ๊ฒ ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ผ์ผ์ด ๋ฐํ ํ์ ์ ๋ช ์ํ์ง ์์๋ ๋ผ์. ์์ ๊ฟ์ด์ฃ ? ๐ฏ
๐จ ์ฃผ์์ฌํญ: ํ์ง๋ง ํจ์๊ฐ ๋ณต์กํด์ง๋ฉด TypeScript๊ฐ ์ ํํ๊ฒ ํ์ ์ ์ถ๋ก ํ์ง ๋ชปํ ์๋ ์์ด์. ๊ทธ๋ด ๋๋ ๋ช ์์ ์ผ๋ก ํ์ ์ ์ ์ธํด์ฃผ๋ ๊ฒ ์ข์์!
3. ์ ๋ค๋ฆญ๊ณผ ํ์ ์ถ๋ก
์ ๋ค๋ฆญ์ ์ฌ์ฉํ ๋๋ TypeScript๋ ํ์ ์ ์ถ๋ก ํ ์ ์์ด์. ์ด๊ฑด ์ข ์ด๋ ค์ธ ์ ์์ง๋ง, ํ๋ฒ ๋ณผ๊น์?
function identity<T>(arg: T): T {
return arg;
}
let output = identity("Hello, TypeScript!");
์ด ๊ฒฝ์ฐ, TypeScript๋ ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ก ํด์:
- T๋ string ํ์ ์ผ๋ก ์ถ๋ก ๋จ
- output ๋ณ์์ ํ์ ์ string
์! ์ ๋ค๋ฆญ๊น์ง ์ถ๋ก ํ๋ค๋, TypeScript ์ง์ง ๋๋ํ๋ค์! ๐๐๐
์ด ๊ทธ๋ฆผ์ ๋ณด๋ฉด ๋ณต์กํ ์ํฉ์์์ ํ์ ์ถ๋ก ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ํ๋์ ๋ณผ ์ ์์ฃ ? ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๊ฐ์ ๋ณต์กํ ๊ตฌ์กฐ๋ TypeScript๊ฐ ์์์ ์ถ๋ก ํด์ค๋ค๋, ์ ๋ง ํธ๋ฆฌํ์ง ์๋์? ใ ใ ใ
์, ์ด์ ๋ณต์กํ ์ํฉ์์์ ํ์ ์ถ๋ก ์ ๋ํด ์์๋ดค์ด์. ํ์ง๋ง ์ฌ๊ธฐ์ ๋์ด ์๋์์! ๋ค์ ์น์ ์์๋ ํ์ ์ถ๋ก ์ ํ๊ณ์ ์ฃผ์ํด์ผ ํ ์ ์ ๋ํด ์์๋ณผ ๊ฑฐ์์. ๊ณ์ ๋ฐ๋ผ์ค์ธ์~ ๐โโ๏ธ๐จ
๐ง ํ์ ์ถ๋ก ์ ํ๊ณ์ ์ฃผ์์
์ฌ๋ฌ๋ถ, ์ง๊ธ๊น์ง ํ์ ์ถ๋ก ์ด ์ผ๋ง๋ ํธ๋ฆฌํ์ง ๋ดค์ฃ ? ํ์ง๋ง ๋ชจ๋ ๊ฒ์ด ์๋ฒฝํ ์ ์์ด์. ํ์ ์ถ๋ก ์๋ ํ๊ณ๊ฐ ์๊ณ , ์ฃผ์ํด์ผ ํ ์ ๋ค์ด ์๋ต๋๋ค. ๋ง์น ์ฌ๋ฅ๋ท์์ ์์ ์ ์ฌ๋ฅ์ ์๊ฐํ ๋ ์ฃผ์ํด์ผ ํ ์ ์ด ์๋ ๊ฒ์ฒ๋ผ ๋ง์ด์์! ๐
1. any ํ์ ์ผ๋ก์ ์ถ๋ก
TypeScript๊ฐ ํ์ ์ ์ถ๋ก ํ์ง ๋ชปํ ๋๋ ์ด๋ป๊ฒ ๋ ๊น์? ๊ทธ๋ด ๋๋ any ํ์ ์ผ๋ก ์ถ๋ก ๋ผ์. ์ด๊ฑด ์ข ์ํํ ์ ์์ด์.
let someValue;
someValue = "Hello";
someValue = 42;
someValue = true;
์ด ๊ฒฝ์ฐ, someValue์ ํ์ ์ any๋ก ์ถ๋ก ๋ผ์. ์ด๋ ๊ฒ ๋๋ฉด TypeScript์ ํ์ ์ฒดํฌ ๊ธฐ๋ฅ์ ์ ๋๋ก ํ์ฉํ ์ ์๊ฒ ๋์ฃ . ๐ฑ
โ ๏ธ ๊ฒฝ๊ณ : any ํ์ ์ TypeScript์ ํ์ ์์ ์ฑ์ ํด์น ์ ์์ด์. ๊ฐ๋ฅํ๋ฉด ํผํ๋ ๊ฒ ์ข์์!
2. ์ ๋์ธ ํ์ ์ผ๋ก์ ์ถ๋ก
๋๋ก๋ TypeScript๊ฐ ์ฌ๋ฌ ๊ฐ์ง ํ์ ์ค ํ๋๋ก ์ถ๋ก ํ ์ ์์ด์. ์ด๊ฑธ ์ ๋์ธ ํ์ ์ด๋ผ๊ณ ํด์.
let mixedArray = [1, "two", 3, "four"];
let result = mixedArray[0];
์ด ๊ฒฝ์ฐ, TypeScript๋ ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ก ํด์:
- mixedArray๋ (number | string)[] ํ์
- result๋ number | string ํ์
์ด๋ ๊ฒ ๋๋ฉด result๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํด์ผ ํด์. number์ผ ์๋ ์๊ณ , string์ผ ์๋ ์์ผ๋๊น์!
3. ํ์ ๋ํ๊ธฐ(Type Widening)
TypeScript๋ ๋๋๋ก ํ์ ์ ๋ ๋๊ฒ ์ถ๋ก ํ ์ ์์ด์. ์ด๊ฑธ ํ์ ๋ํ๊ธฐ๋ผ๊ณ ํด์.
let x = 3; // number๋ก ์ถ๋ก
let y = [1, 2, 3] as const; // readonly [1, 2, 3]์ผ๋ก ์ถ๋ก
x์ ๊ฒฝ์ฐ, 3์ด๋ผ๋ ํน์ ๊ฐ์ด ์๋๋ผ number ํ์ ์ผ๋ก ๋๊ฒ ์ถ๋ก ๋ผ์. ๋ฐ๋ฉด y๋ as const๋ฅผ ์ฌ์ฉํด์ ์ข๊ฒ ์ถ๋ก ๋๋๋ก ํ์ด์.
๐ก ํ: ํ์ ์ ์ข๊ฒ ์ ์งํ๊ณ ์ถ๋ค๋ฉด as const๋ ๋ช ์์ ํ์ ์ ์ธ์ ์ฌ์ฉํ ์ ์์ด์!
4. ํจ์ ํ๋ผ๋ฏธํฐ์ ํ์ ์ถ๋ก
ํจ์ ํ๋ผ๋ฏธํฐ์ ๊ฒฝ์ฐ, TypeScript๋ ํ์ ์ ์ถ๋ก ํ์ง ์์์. ์ด๊ฑด ์ข ์์ฝ์ฃ ? ใ ใ
function greet(name) {
console.log(`Hello, ${name}!`);
}
greet("TypeScript"); // ์๋ฌ ๋ฐ์ ๊ฐ๋ฅ!
์ด ๊ฒฝ์ฐ, name ํ๋ผ๋ฏธํฐ์ ํ์ ์ด any๋ก ์ทจ๊ธ๋ผ์. ์ด๊ฑด ํ์ ์์ ์ฑ์ ํด์น ์ ์์ผ๋, ํ๋ผ๋ฏธํฐ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ ์ธํ๋ ๊ฒ ์ข์์!
์ด ๊ทธ๋ฆผ์ ๋ณด๋ฉด ํ์ ์ถ๋ก ์ ํ๊ณ๊ฐ ํ๋์ ๋ค์ด์ค์ฃ ? any ํ์ , ์ ๋์ธ ํ์ , ํ์ ๋ํ๊ธฐ, ํจ์ ํ๋ผ๋ฏธํฐ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์ํฉ์์ ํ์ ์ถ๋ก ์ด ์๋ฒฝํ์ง ์์ ์ ์์ด์. ์ด๋ฐ ์ ๋ค์ ์ ๊ธฐ์ตํด๋์ธ์!
์, ์ด์ ํ์ ์ถ๋ก ์ ํ๊ณ์ ์ฃผ์์ ์ ๋ํด ์์๋ดค์ด์. ํ์ ์ถ๋ก ์ด ํธ๋ฆฌํ๊ธด ํ์ง๋ง, ํญ์ ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฑธ ๊ธฐ์ตํ์ธ์! ๋ค์ ์น์ ์์๋ ์ด๋ฐ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ณ ๋ ํจ๊ณผ์ ์ผ๋ก ํ์ ์ถ๋ก ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณผ ๊ฑฐ์์. ๊ณ์ ๋ฐ๋ผ์ค์ธ์~ ๐
๐ ํ์ ์ถ๋ก ํ์ฉํ๊ธฐ: ๋ฒ ์คํธ ํ๋ํฐ์ค
์, ์ด์ ํ์ ์ถ๋ก ์ ์ฅ๋จ์ ์ ์์์ผ๋ ์ด๋ป๊ฒ ํ๋ฉด ์ด๊ฑธ ์ ํ์ฉํ ์ ์์์ง ์์๋ณผ๊น์? ๋ง์น ์ฌ๋ฅ๋ท์์ ์์ ์ ์ฌ๋ฅ์ ์ต๋ํ ์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์์! ๐
1. ์ด๊ธฐ๊ฐ ์ค์ ํ๊ธฐ
๋ณ์๋ฅผ ์ ์ธํ ๋ ์ด๊ธฐ๊ฐ์ ์ค์ ํ๋ฉด, TypeScript๊ฐ ๋ ์ ํํ๊ฒ ํ์ ์ ์ถ๋ก ํ ์ ์์ด์.
// ์ข์ ์
let name = "๊น์ฝ๋ฉ"; // string์ผ๋ก ์ถ๋ก
// ํผํด์ผ ํ ์
let age; // any๋ก ์ถ๋ก
age = 25;
์ด๊ธฐ๊ฐ์ ์ค์ ํ๋ฉด TypeScript๊ฐ ๋ ์ ํํ ํ์ ์ ์ถ๋ก ํ ์ ์์ด์. ์ด๋ ๊ฒ ํ๋ฉด any ํ์ ์ ํผํ ์ ์์ฃ !
2. const ์ฌ์ฉํ๊ธฐ
๊ฐ๋ฅํ๋ฉด let ๋์ const๋ฅผ ์ฌ์ฉํ์ธ์. const๋ฅผ ์ฌ์ฉํ๋ฉด TypeScript๊ฐ ๋ ์ข์ ํ์ ์ผ๋ก ์ถ๋ก ํด์.
// ์ข์ ์
const PI = 3.14; // 3.14๋ก ์ถ๋ก
// ๋ ์ข์ ์
let PI = 3.14; // number๋ก ์ถ๋ก
const๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ์์ ๊ฐ์ด ๋ณํ์ง ์๋๋ค๋ ๊ฑธ TypeScript์๊ฒ ์๋ ค์ค ์ ์์ด์. ์ด๋ ๊ฒ ํ๋ฉด ๋ ์ ํํ ํ์ ์ถ๋ก ์ด ๊ฐ๋ฅํด์ ธ์!
3. ํ์ ๋จ์ธ ์ฌ์ฉํ๊ธฐ
TypeScript๊ฐ ์ถ๋ก ํ ํ์ ์ด ๋๋ฌด ๋๋ค๊ณ ์๊ฐ๋๋ฉด, ํ์ ๋จ์ธ์ ์ฌ์ฉํ ์ ์์ด์.
let someValue: any = "this is a string";
let strLength = (someValue as string).length;
ํ์ง๋ง ์ฃผ์ํ์ธ์! ํ์ ๋จ์ธ์ ๋๋ฌด ์์ฃผ ์ฌ์ฉํ๋ฉด TypeScript์ ์ฅ์ ์ ๋ชป ์ด๋ฆด ์ ์์ด์. ๊ผญ ํ์ํ ๋๋ง ์ฌ์ฉํ๋ ๊ฒ ์ข์์.
4. ์ ๋ค๋ฆญ ํ์ฉํ๊ธฐ
ํจ์๋ ํด๋์ค๋ฅผ ์์ฑํ ๋ ์ ๋ค๋ฆญ์ ํ์ฉํ๋ฉด, ๋ ์ ์ฐํ๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ด์.
function identity<T>(arg: T): T {
return arg;
}
let output = identity("Hello"); // output์ string์ผ๋ก ์ถ๋ก ๋จ
์ ๋ค๋ฆญ์ ์ฌ์ฉํ๋ฉด ํจ์๋ ํด๋์ค๊ฐ ๋ค์ํ ํ์ ๊ณผ ํจ๊ป ๋์ํ ์ ์์ด์. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง์ฃ !
5. ์ธํฐํ์ด์ค์ ํ์ ๋ณ์นญ ํ์ฉํ๊ธฐ
๋ณต์กํ ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ๋ค๋ฃฐ ๋๋ ์ธํฐํ์ด์ค๋ ํ์ ๋ณ์นญ์ ํ์ฉํ์ธ์.
interface Person {
name: string;
age: number;
}
let user: Person = {
name: "๊น์ฝ๋ฉ",
age: 25
};
์ด๋ ๊ฒ ํ๋ฉด ๊ฐ์ฒด์ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ๊ฒ ์ ์ํ ์ ์๊ณ , ์ฌ์ฌ์ฉ์ฑ๋ ๋์์ ธ์. ๋ง์น ์ฌ๋ฅ๋ท์์ ์์ ์ ์ฌ๋ฅ์ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํด์ ๋ณด์ฌ์ฃผ๋ ๊ฒ๊ณผ ๊ฐ์ฃ ! ใ ใ ใ
์ด ๊ทธ๋ฆผ์ ๋ณด๋ฉด ํ์ ์ถ๋ก ์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ๋ค์ด ํ๋์ ๋ค์ด์ค์ฃ ? ์ด๊ธฐ๊ฐ ์ค์ , const ์ฌ์ฉ, ํ์ ๋จ์ธ, ์ ๋ค๋ฆญ ํ์ฉ, ์ธํฐํ์ด์ค ์ฌ์ฉ ๋ฑ ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ด ๋ชจ์ฌ์ ์์ ํ๊ณ ์ ์ฐํ ์ฝ๋๋ฅผ ๋ง๋ค์ด๋ด๋ ๊ฑฐ์์. ๋ง์น ์ฌ๋ฅ๋ท์์ ์ฌ๋ฌ๋ถ์ ๋ค์ํ ์ฌ๋ฅ๋ค์ด ๋ชจ์ฌ์ ๋ฉ์ง ํ๋กํ์ ๋ง๋๋ ๊ฒ์ฒ๋ผ์! ๐
๐ก ๊ฟํ: ์ด๋ฐ ๋ฒ ์คํธ ํ๋ํฐ์ค๋ค์ ์ ํ์ฉํ๋ฉด, ํ์ ์ถ๋ก ์ ์ฅ์ ์ ์ต๋ํ ์ด๋ฆฌ๋ฉด์ ๋จ์ ์ ์ต์ํํ ์ ์์ด์. ์ฝ๋์ ์์ ์ฑ๊ณผ ๊ฐ๋ ์ฑ์ด ๋ชจ๋ ์ข์์ง๋ค๋ ๊ฑฐ์ฃ !
์, ์ด์ ํ์ ์ถ๋ก ์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ดค์ด์. ์ด๋ฐ ๋ฐฉ๋ฒ๋ค์ ์ ํ์ฉํ๋ฉด, TypeScript์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ 100% ํ์ฉํ ์ ์์ ๊ฑฐ์์. ๋ง์น ์ฌ๋ฅ๋ท์์ ์ฌ๋ฌ๋ถ์ ์ฌ๋ฅ์ ์ต๋ํ ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ฃ ! ใ ใ ใ
๋ค์ ์น์ ์์๋ ์ค์ ํ๋ก์ ํธ์์ ํ์ ์ถ๋ก ์ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง, ๊ตฌ์ฒด์ ์ธ ์์ ์ ํจ๊ป ์์๋ณผ ๊ฑฐ์์. ๊ณ์ ๋ฐ๋ผ์ค์ธ์~ ๐
๐ญ ์ค์ ์์ : ํ์ ์ถ๋ก ํ์ฉํ๊ธฐ
์, ์ด์ ์ค์ ํ๋ก์ ํธ์์ ํ์ ์ถ๋ก ์ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง ๊ตฌ์ฒด์ ์ธ ์์ ๋ฅผ ํตํด ์์๋ณผ๊น์? ๋ง์น ์ฌ๋ฅ๋ท์์ ์ค์ ํ๋ก์ ํธ๋ฅผ ์ํํ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์์! ๐
1. ๊ฐ๋จํ TODO ๋ฆฌ์คํธ ๋ง๋ค๊ธฐ
๋จผ์ ๊ฐ๋จํ TODO ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด๋ณผ๊ฒ์. ํ์ ์ถ๋ก ์ ์ต๋ํ ํ์ฉํด๋ณผ๊ฑฐ์์.
// Todo ํ์
์ ์
interface Todo {
id: number;
text: string;
completed: boolean;
}
// ์ด๊ธฐ ์ํ
const initialTodos = [
{ id: 1, text: "TypeScript ๊ณต๋ถํ๊ธฐ", completed: false },
{ id: 2, text: "์ฌ๋ฅ๋ท ํ๋กํ ์
๋ฐ์ดํธํ๊ธฐ", completed: true }
];
// Todo ๋ชฉ๋ก ์ํ (ํ์
์ถ๋ก ํ์ฉ)
let todos = initialTodos;
// Todo ์ถ๊ฐ ํจ์
function addTodo(text: string) {
const newTodo = {
id: todos.length + 1,
text,
completed: false
};
todos = [...todos, newTodo];
}
// Todo ์๋ฃ ์ํ ๋ณ๊ฒฝ ํจ์
function toggleTodo(id: number) {
todos = todos.map(todo =>
todo.id === id ? { ...todo, completed: !todo.completed } : todo
);
}
// ์ฌ์ฉ ์
addTodo("์ฌ๋ฅ๋ท์์ ์ ํ๋ก์ ํธ ์ฐพ์๋ณด๊ธฐ");
toggleTodo(1);
console.log(todos);
์ด ์์ ์์ todos ๋ณ์์ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ ์ธํ์ง ์์์ง๋ง, TypeScript๊ฐ Todo[] ํ์ ์ผ๋ก ์ถ๋ก ํด์ค์. ๋ํ addTodo์ toggleTodo ํจ์์ ๋ฐํ ํ์ ๋ ์๋์ผ๋ก ์ถ๋ก ๋ผ์. ๊น๋ํ์ฃ ? ใ ใ ใ
2. ์ ๋ค๋ฆญ์ ํ์ฉํ ๋ฐ์ดํฐ fetcher ๋ง๋ค๊ธฐ
์ด๋ฒ์๋ ์ ๋ค๋ฆญ์ ํ์ฉํด์ ๋ฒ์ฉ์ ์ธ ๋ฐ์ดํฐ fetcher๋ฅผ ๋ง๋ค์ด๋ณผ๊ฒ์.
async function fetchData<T>(url: string): Promise<T> {
const response = await fetch(url);
return response.json();
}
// ์ฌ์ฉ ์
interface User {
id: number;
name: string;
email: string;
}
async function getUser(id: number) {
const user = await fetchData<User>(`https://api.example.com/users/${id}`);
console.log(user.name); // TypeScript๊ฐ user๊ฐ User ํ์
์์ ์๊ณ ์์ด์!
}
์ด ์์ ์์ fetchData ํจ์๋ ์ ๋ค๋ฆญ์ ์ฌ์ฉํด์ ์ด๋ค ํ์ ์ ๋ฐ์ดํฐ๋ ๊ฐ์ ธ์ฌ ์ ์์ด์. TypeScript๋ getUser ํจ์ ์์์ user ๋ณ์์ ํ์ ์ ์ ํํ ์๊ณ ์์ฃ . ์์ ๋๋ํด์! ๐
3. ํ์ ์ถ๋ก ์ ํ์ฉํ ์ํ ๊ด๋ฆฌ
๋ง์ง๋ง์ผ๋ก, ๊ฐ๋จํ ์ํ ๊ด๋ฆฌ ์์คํ ์ ๋ง๋ค์ด๋ณผ๊ฒ์. ํ์ ์ถ๋ก ์ ์ต๋ํ ํ์ฉํด๋ณผ๊ฑฐ์์.
type State = {
user: {
name: string;
age: number;
} | null;
theme: 'light' | 'dark';
};
const initialState: State = {
user: null,
theme: 'light'
};
function createStore<T>(initialState: T) {
let state = initialState;
return {
getState: () => state,
setState: (newState: Partial<T>) => {
state = { ...state, ...newState };
}
};
}
// ์ฌ์ฉ ์
const store = createStore(initialState);
store.setState({ theme: 'dark' });
store.setState({ user: { name: "๊น์ฝ๋ฉ", age: 25 } });
console.log(store.getState());
์ด ์์ ์์ createStore ํจ์๋ ์ ๋ค๋ฆญ์ ์ฌ์ฉํด์ ์ด๋ค ํํ์ ์ํ๋ ๊ด๋ฆฌํ ์ ์์ด์. TypeScript๋ store.setState ๋ฉ์๋์ ์ ๋ฌ๋๋ ๊ฐ์ฒด์ ํํ๋ฅผ ์ ํํ ์๊ณ ์์ฃ . ํ์ ์์ ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋์์ ์ก์์ด์!
์ด ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ค์ ์์ ํ์ ์ถ๋ก ์ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง ํ๋์ ๋ค์ด์ค์ฃ ? TODO ๋ฆฌ์คํธ, ๋ฐ์ดํฐ Fetcher, ์ํ ๊ด๋ฆฌ ๋ฑ ๋ค์ํ ์ํฉ์์ ํ์ ์ถ๋ก ์ ํ์ฉํด ์์ ํ๊ณ ์ ์ฐํ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์์ด์. ๋ง์น ์ฌ๋ฅ๋ท์์ ์ฌ๋ฌ๋ถ์ ๋ค์ํ ์ฌ๋ฅ์ ํ์ฉํด ๋ฉ์ง ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ฒ๋ผ์! ๐
๐ก ๊ฟํ: ์ค์ ์์๋ ์ด๋ฐ ์์ ๋ค์ ์กฐํฉํด์ ๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ด์. ํ์ ์ถ๋ก ์ ์ ํ์ฉํ๋ฉด, ์ฝ๋์ ์์ ์ค์ด๋ฉด์๋ ํ์ ์์ ์ฑ์ ๋์ผ ์ ์๋ต๋๋ค!
์, ์ด์ ํ์ ์ถ๋ก ์ ์ค์ ์์ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง ์์๋ดค์ด์. ์ด๋ฐ ๋ฐฉ๋ฒ๋ค์ ์ ํ์ฉํ๋ฉด, TypeScript์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ 100% ํ์ฉํ๋ฉด์๋ ๊น๋ํ๊ณ ์์ ํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ ๊ฑฐ์์. ๋ง์น ์ฌ๋ฅ๋ท์์ ์ฌ๋ฌ๋ถ์ ์ฌ๋ฅ์ ์ต๋ํ ๋ฐํํด ๋ฉ์ง ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ฃ ! ใ ใ ใ
์ด์ ์ฐ๋ฆฌ์ TypeScript ํ์ ์ถ๋ก ์ฌํ์ด ๊ฑฐ์ ๋๋๊ฐ๊ณ ์์ด์. ๋ง์ง๋ง ์น์ ์์๋ ์ง๊ธ๊น์ง ๋ฐฐ์ด ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ , ์์ผ๋ก ์ด๋ป๊ฒ ๋ ๋ฐ์ ํ ์ ์์์ง ์์๋ณผ ๊ฑฐ์์. ๊ณ์ ๋ฐ๋ผ์ค์ธ์~ ๐
๐ ๋ง๋ฌด๋ฆฌ: ํ์ ์ถ๋ก ๋ง์คํฐํ๊ธฐ
์ฌ๋ฌ๋ถ, ์ ๋ง ๋๋จํด์! ์ง๊ธ๊น์ง TypeScript์ ํ์ ์ถ๋ก ์ ๋ํด ๊น์ด ์๊ฒ ์์๋ดค์ด์. ๋ง์น ์ฌ๋ฅ๋ท์์ ์๋ก์ด ์ฌ๋ฅ์ ๋ง์คํฐํ ๊ฒ ๊ฐ์ง ์๋์? ๐ ์ด์ ๋ง์ง๋ง์ผ๋ก ์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ด ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ , ์์ผ๋ก์ ๋ฐ์ ๋ฐฉํฅ์ ๋ํด ์ด์ผ๊ธฐํด๋ณผ๊ฒ์.
๐ ๋ฐฐ์ด ๋ด์ฉ ์ ๋ฆฌ
- ํ์ ์ถ๋ก ์ ๊ธฐ๋ณธ: TypeScript๊ฐ ์ด๋ป๊ฒ ๋ณ์, ํจ์, ๊ฐ์ฒด์ ํ์ ์ ์ถ๋ก ํ๋์ง ๋ฐฐ์ ์ด์.
- ๋ณต์กํ ์ํฉ์์์ ํ์ ์ถ๋ก : ๋ฐฐ์ด, ๊ฐ์ฒด, ์ ๋ค๋ฆญ ๋ฑ ๋ ๋ณต์กํ ์ํฉ์์์ ํ์ ์ถ๋ก ์ ๋ํด ์์๋ดค์ด์.
- ํ์ ์ถ๋ก ์ ํ๊ณ: any ํ์ , ์ ๋์ธ ํ์ , ํ์ ๋ํ๊ธฐ ๋ฑ ํ์ ์ถ๋ก ์ ํ๊ณ์ ์ฃผ์์ ์ ๋ํด ๋ฐฐ์ ์ด์.
- ๋ฒ ์คํธ ํ๋ํฐ์ค: ์ด๊ธฐ๊ฐ ์ค์ , const ์ฌ์ฉ, ์ ๋ค๋ฆญ ํ์ฉ ๋ฑ ํ์ ์ถ๋ก ์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ดค์ด์.
- ์ค์ ์์ : TODO ๋ฆฌ์คํธ, ๋ฐ์ดํฐ fetcher, ์ํ ๊ด๋ฆฌ ๋ฑ ์ค์ ํ๋ก์ ํธ์์ ํ์ ์ถ๋ก ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ด์.
๐ ์์ผ๋ก์ ๋ฐ์ ๋ฐฉํฅ
ํ์ ์ถ๋ก ์ ๋ง์คํฐํ๋ค๊ณ ํด์ ์ฌ๊ธฐ์ ๋ฉ์ถ๋ฉด ์ ๋ผ์! ๊ณ์ํด์ ๋ฐ์ ํด ๋๊ฐ์ผ ํด์. ์ด๋ป๊ฒ ํ๋ฉด ๋ ๊น์?
- ๋ ๋ณต์กํ ํ๋ก์ ํธ ๋์ ํ๊ธฐ: ์ค์ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ํ์ ์ถ๋ก ์ ํ์ฉํด๋ณด์ธ์. ๋ ๋ง์ ๊ฒฝํ์ ์์ ์ ์์ ๊ฑฐ์์.
- TypeScript ์ปค๋ฎค๋ํฐ ์ฐธ์ฌํ๊ธฐ: GitHub, Stack Overflow ๋ฑ์์ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๊ณผ ์ง์์ ๊ณต์ ํ์ธ์. ์๋ก์ด ์ธ์ฌ์ดํธ๋ฅผ ์ป์ ์ ์์ด์!
- ์ต์ ํธ๋ ๋ ๋ฐ๋ผ๊ฐ๊ธฐ: TypeScript๋ ๊ณ์ ๋ฐ์ ํ๊ณ ์์ด์. ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ํจํด๋ค์ ๊พธ์คํ ํ์ตํ์ธ์.
- ๋ค๋ฅธ ๊ธฐ์ ๊ณผ ๊ฒฐํฉํ๊ธฐ: React, Vue, Node.js ๋ฑ ๋ค๋ฅธ ๊ธฐ์ ๋ค๊ณผ TypeScript๋ฅผ ๊ฒฐํฉํด ์ฌ์ฉํด๋ณด์ธ์. ์๋์ง ํจ๊ณผ๋ฅผ ๋ผ ์ ์์ด์!
๐ก ๊ฟํ: ํ์ ์ถ๋ก ์ TypeScript์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด์ง๋ง, ๋ง๋ฅ์ ์๋์์. ๋๋ก๋ ๋ช ์์ ์ธ ํ์ ์ ์ธ์ด ํ์ํ ์ ์์ด์. ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ์ฌ์ฉํ๋ ๊ฒ ์ค์ํด์!
์ฌ๋ฌ๋ถ, ์ ๋ง ๋๋จํด์! ์ด์ TypeScript์ ํ์ ์ถ๋ก ์ ๋ํด ๊น์ด ์๊ฒ ์ดํดํ๊ฒ ๋์์ด์. ์ด ์ง์์ ๋ฐํ์ผ๋ก ๋ ์์ ํ๊ณ , ๋ ํจ์จ์ ์ด๊ณ , ๋ ๋ฉ์ง ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ ๊ฑฐ์์. ๋ง์น ์ฌ๋ฅ๋ท์์ ์๋ก์ด ์ฌ๋ฅ์ ์ต๋ํด ๋ ๋ค์ฌ๋ค๋ฅํ ๊ฐ๋ฐ์๊ฐ ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์์! ใ ใ ใ
์์ผ๋ก๋ ๊ณ์ํด์ ํ์ตํ๊ณ ์ฑ์ฅํด ๋๊ฐ์ธ์. TypeScript์ ํจ๊ป๋ผ๋ฉด, ์ฌ๋ฌ๋ถ์ ๊ฐ๋ฐ ์ฌ์ ์ ๋์ฑ ์ฆ๊ฒ๊ณ ํ์ฑํด์ง ๊ฑฐ์์. ํ์ดํ ! ๐ช๐
์ด ๊ทธ๋ฆผ์ ์ฌ๋ฌ๋ถ์ TypeScript ํ์ ์ถ๋ก ๋ง์คํฐ ์ฌ์ ์ ๋ณด์ฌ์ฃผ๊ณ ์์ด์. ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๊ณ , ์ค์ ์์ ํ์ฉํ๋ฉฐ, ์ง์์ ์ผ๋ก ํ์ตํด ๋๊ฐ๋ ๊ณผ์ ์ด์ฃ . ์ด ์ฌ์ ์ ๋์ด ์์ด์. ๊ณ์ํด์ ์ฑ์ฅํ๊ณ ๋ฐ์ ํด ๋๊ฐ ์ ์๋ต๋๋ค! ๐
์, ์ด์ ์ ๋ง ๋์ด์์. ์ฌ๋ฌ๋ถ์ ์ด์ TypeScript ํ์ ์ถ๋ก ์ ๋ฌ์ธ์ด ๋์์ด์! ์ด ์ง์์ ํ์ฉํด ๋ ๋ฉ์ง ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ณด์ธ์. ์ฌ๋ฅ๋ท์์ ์ฌ๋ฌ๋ถ์ ์๋ก์ด ์ฌ๋ฅ์ ๋ฝ๋ด๋ ๊ฒ์ฒ๋ผ ๋ง์ด์์! ํญ์ ์์ํ๊ณ ์์๊ฒ์. ํ์ดํ ! ๐๐
- ์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์ฌ๋ฅ๋ท์ ์ต์ AI ๊ธฐ์ ๊ณผ ๋ฒ๋ฅ ์ ๊ธฐ๋ฐํ์ฌ ์์ฌ์ ์ง์ ์ฌ์ฐ๊ถ์ ์ ๊ทน์ ์ผ๋ก ๋ณดํธํ๋ฉฐ,
๋ฌด๋จ ์ฌ์ฉ ๋ฐ ์นจํด ํ์์ ๋ํด ๋ฒ์ ๋์์ ํ ๊ถ๋ฆฌ๋ฅผ ๋ณด์ ํฉ๋๋ค.
ยฉ 2025 ์ฌ๋ฅ๋ท | All rights reserved.
๋๊ธ 0๊ฐ