2025. 10. 25. 10:42ใFront-end/TypeScript

๋ชฉ์ฐจ
1. TypeScript๋?
1-1. ํ์ ์คํฌ๋ฆฝํธ
1-2. JsDoc์ ํ์ ์คํฌ๋ฆฝํธ
2. TypeScript์ ํน์ง
3. TypeScript์ ์ฅ๋จ์
1. TypeScript๋?
1. ํ์ ์คํฌ๋ฆฝํธ
ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ ์ ๋ถ์ฌํ ์ธ์ด๋ก, Microsoft์์ ๊ฐ๋ฐํ๊ณ ์ ์ง๊ด๋ฆฌํ๊ณ ์๋ค.
Apache ๋ผ์ด์ผ์ค๊ฐ ๋ถ์ฌ๋ ์คํ ์์ค์ด๋ฉฐ, 2012๋ 10์์ ์ฒ์ ๋ฆด๋ฆฌ์ฆ๋์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ์ ์ ์ ์ฐํ๊ฒ ํ์ฌ ์ด๋ป๊ฒ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ์ค๊ณํ๋ ๊ฒ์ด ๊ธฐ๋ณธ ํ๋ฆ์ด์๋ค๋ฉด,
ํ์ ์คํฌ๋ฆฝํธ๋ ํ์ ์ ๋ช ํํ๊ฒ ๋ถ์ฌํ์ฌ ์ฒ์๋ถํฐ ์์ ํ ๊ฐ๋ฐ์ ํ์ฌ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ๋ ๊ฒ์ด ํ์ ์์์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ ๋ฑ์ ์ถ๊ฐํ ํ์ฅํ ๋๋์ผ๋ก,
ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ง๋ ํ๋ก์ ํธ๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ์คํํ๋ ค๋ฉด ํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ ํด์ฃผ์ด์ผ ํ๋ค.
2. JsDoc์ ํ์ ์คํฌ๋ฆฝํธ
JsDoc๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ์ฃผ์์ ํตํด ํ์ ์ ๋ณด๋ ํจ์์ ๋์์ ๋ฌธ์ํํ๋ ํ์ค ๋ฐฉ์์ด๋ค.
ํ์ ์ ์ ์ํ์ง ์๊ณ ๋, ์ฃผ์์ ํตํด ๊ฐ๋ฐ์์ ๊ฐ๋ฐ ๋๊ตฌ๊ฐ ํ์ ์ ๋ณด๋ฅผ ์ถ๋ก ํ ์ ์๋๋ก ๋๋๋ค.
ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฒ์ ์์ํ ๋ ์ง์ ์ฅ๋ฒฝ์ด ์๋ ๋ฐ๋ฉด, JsDoc๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ ์ ๊น๋ค๋กญ๊ฒ ์ง์ ํ์ง ์๊ณ ๋ ํ์ ์ถ๋ก ์ ํ ์ ์๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ JsDoc๋ ์ค์ ํ์ ๊ฒ์ฌ๋ฅผ ์ํํ์ง ์์, ํ์ ์ ๋ณด์ ๋ฌธ์์ ์๋ฏธ๋ง ๊ฐ์ง๋ฉฐ ์ ์ ํ์ ์์ ์ฑ์ ๋ณด์ฅํ์ง๋ ์๋๋ค.
์ปดํ์ผ๋ฌ๊ฐ ์ค๋ฅ๋ฅผ ๊ฒ์ถํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๋จ์ง ์กฐ๊ธ ๋ ํธ๋ฆฌํ ์ฃผ์ ์ฒ๋ฆฌ์ด๋ค.
2. TypeScript์ ํน์ง
ํ์ ์คํฌ๋ฆฝํธ๋ JavaScript + ์ ์ ํ์ ์์คํ + ์ต์ ECMAScript ๋ฌธ๋ฒ ์ง์ + ๊ฐ๋ฐ ์์ฐ์ฑ ํฅ์ ๊ธฐ๋ฅ ์ ํฉ์น ์ธ์ด์ด๋ค.
1. ์ ์ ํ์ ์์คํ
1) ์ ์ ํ์ ๊ฒ์ฌ
ํ์ ์คํฌ๋ฆฝํธ๋ ์ฝ๋ ์คํ ์ ์ปดํ์ผ ๋จ๊ณ์์ ํ์ ์ค๋ฅ๋ฅผ ๊ฒ์ถํ๋ค.
๋ฐํ์์ด ์๋ ๊ฐ๋ฐ ์์ ์ ํ์ ๋ถ์ผ์น๋ฅผ ๋ฏธ๋ฆฌ ๋ฐ๊ฒฌํ ์ ์์ด ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ์ค์ธ๋ค.
์ด๋ฅผ ํตํด ์ฝ๋์ ์์ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฌ๊ฒ ํฅ์์ํจ๋ค.
let age: number = 25; // number๋ก ํ์
์ง์
age = "25"; // ์ค๋ฅ ๋ฐ์
2) ๊ฐ๋ ฅํ ํ์ ์ถ๋ก
๋ชจ๋ ๋ณ์์ ์ผ์ผ์ด ํ์ ์ ๋ช ์ํ์ง ์์๋, ํ์ ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ๋ ๋ณ์์ ์ด๊ธฐ๊ฐ, ํจ์์ ๋ฐํ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์๋์ผ๋ก ํ์ ์ ์ถ๋ก ํ๋ค.
let msg = "hello"; // string์ผ๋ก ์ถ๋ก ๋จ
msg = 123; // ์ค๋ฅ ๋ฐ์
3) ์ธํฐํ์ด์ค์ ์ ๋ค๋ฆญ
ํ์ ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ์ธํฐํ์ด์ค(interface), ํ์ ์ ๋งค๊ฐ๋ณ์ํํ๋ ์ ๋ค๋ฆญ(generics)์ ์ง์ํ๋ค.
์ด๋ฅผ ํตํด ์ฌ์ฌ์ฉ์ฑ ๋์ ์ฝ๋ ์ค๊ณ๊ฐ ๊ฐ๋ฅํ๋ค.
interface User {
name: string;
age: number;
}
function greet<T extends User>(user: T): string {
return `์๋
ํ์ธ์ ${user.name}๋ (${user.age}์ธ)`;
}
2. ์ต์ ECMAScript ๋ฌธ๋ฒ ์ง์
ํ์ ์คํฌ๋ฆฝํธ๋ ES6 ์ด์ ๋ฌธ๋ฒ์ ๋ชจ๋ ์ง์ํ๋ฉฐ, ํ์ ํธํ์ฑ์ ์ํด ์ปดํ์ผ ์ ๊ตฌ๋ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ณํํ ์ ์๋ค.
3. ๊ฐ๋ฐ ํฅ์์ฑ ๊ธฐ๋ฅ ์ง์
1) ๋๊ตฌ ์นํ์ฑ
vs code ๋ฑ์ ์ฃผ์ IDE์์ ์๋ ์์ฑ, ํ์ ๊ฒ์ฌ, ์ฝ๋ ๋ฆฌํฉํ ๋ง, ์ ์ ์ด๋ ๋ฑ ๋ค์ํ ๊ฐ๋ฐ์ ์ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ด๋ฅผ ํตํด ๊ฐ๋ฐ ์๋์ ํฅ์, ์ค๋ฅ ๊ฐ์์ ๊ธฐ์ฌํ๋ค.
2) ์ ์ง์ ์ ์ฉ ๊ฐ๋ฅ
๊ธฐ์กด ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ์ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ๋์ ํ ์ ์๋ค.
.js ํ์ผ์ ์ ์ง์ ์ผ๋ก .ts๋ฅผ ์ ์ฉํ๊ฑฐ๋, allowJs ์ต์ ์ ํตํด ๋ ์ธ์ด๋ฅผ ํผํฉ ์ฌ์ฉํ ์ ์๋ค.
3. TypeScript์ ์ฅ๋จ์
ํ์ ์คํฌ๋ฆฝํธ๋ ๊ฐ๋ฐ ํจ์จ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๊ธฐ ์ํด ์ค๊ณ๋์๋ค.
ํ์ง๋ง ์ฅ์ ๋ง ์๋ ๊ฒ์ ์๋๋ค.
| ์ฅ์ | ์ฝ๋ ์์ ์ฑ ํฅ์ | ๋ฐํ์ ์ด์ ์ ์๋ฌ๋ฅผ ์กฐ๊ธฐ ๋ฐ๊ฒฌํ์ฌ ๋ฒ๊ทธ ์๋ฐฉ ๋ฐ QA ๋น์ฉ ๊ฐ์ |
| ๋ฐ์ด๋ ์๋ ์์ฑ๊ณผ ๋ฆฌํฉํ ๋ง ์ง์ | IDE๊ฐ ํ์
์ ๋ณด๋ฅผ ์ธ์ํ์ฌ ์๋ ์์ฑ, ์๋ ๋ฆฌํฉํ ๋ง์ด ์ ๊ตํ๊ฒ ๋์ → ์ฝ๋ ์์ฐ์ฑ ๋ฐ ์ ์ง๋ณด์์ฑ ํฅ์ |
|
| ๋ช ํํ ์ฝ๋ ์๋ ํํ | ํ์ ์ ์ธ์ ํตํด ๊ฐ๋ฐ์์ ์๋๊ฐ ๋ช ํํ๊ฒ ๋๋ฌ๋จ | |
| ์ต์ ECMAScript ๊ธฐ๋ฅ ์ ์ ์ง์ | ECMAScript ํ์ค์ ์์ class, decorator, async/await ๋ฑ์ ๊ธฐ๋ฅ์ ์ง์ | |
| ์ ์ง์ ๋์ ๊ฐ๋ฅ | js์ ํผ์ฉ์ด ๊ฐ๋ฅํ์ฌ ๋๊ท๋ชจ ๋ฆฌํฉํ ๋ง ์์ด๋ ์ ์ง์ ๋ฆฌํฉํ ๋ง ๊ฐ๋ฅ | |
| ๋จ์ | ์ด๊ธฐ ์ค์ ๋ฐ ํ์ต ๋น์ฉ | ์ปดํ์ผ ์ค์ , ํ์ ์ ์ธ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ฉฐ, ์ด๊ธฐ ํ์ต ์๊ฐ์ด ํ์ |
| ์ปดํ์ผ ๋จ๊ณ ์ถ๊ฐ๋ก ์ธํ ๋น๋ ์๊ฐ ์ฆ๊ฐ | ์์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋นํด ๋น๋ ์๋๊ฐ ๋๋ ค์ง ์ ์์ | |
| ์๊ท๋ชจ ํ๋ก์ ํธ์์์ ๋ถ๋ด | ๊ฐ๋จํ ์คํฌ๋ฆฝํธ, ํ๋กํ ํ์ ์์ค์์๋ ์คํ๋ ค ๋นํจ์จ์ ์ผ ์ ์์ |
์ฅ๋จ์ ์ ๋์ดํด๋ดค๋๋ฐ, ์ฌ์ค ๋จ์ ๋ ์ด์ฌํ ๋์ง์ด ๋ธ ๋๋์ด ์์ง ์๋ ์ถ๋ค.
19๋ ๋์ prettier๋ฅผ ์ฌ์ฉํ์ง ์์ ์ฝ๋ ์คํ์ผ ๊ฐ์ ๊ฐ ๋์ง ์์ ์ฑ๋ก ์ฝ๋ฉ์ ํ์ ๋ ์ด๋ฐ ์๋ฌ๋ค์ ๋ช์๊ฐ๋์ ์ฝ๋ ํ ์ค ํ์ค์ ๋์ ๋น ์ง๊ฒ ์ฐพ์๋ ๊ธฐ์ต์ด ์๋ค.
- ์ธ๋ฏธ์ฝ๋ก (;) ํ๋๊ฐ ์ฝ๋ก (:)์ผ๋ก ์๋ชป ๋ค์ด๊ฐ
- ์์ดํฐ์ผ๋ก ์์ฑํ๊ณ ๊ฐ์ ธ์๋ค๊ฐ ์ด์ํ ๋ฐ์ดํ๊ฐ ๋ค์ด๊ฐ
์ด์ ๋ ai๋ ์์ด์ ๋ธ๊นํ๊ณ ๋น ๋ฅด๊ฒ ์๋ฌ๋ฅผ ์ฐพ์ ์ ์์ง๋ง..
์ด๋ฐ ๊ด์ ์ผ๋ก ๋ณด๋ฉด ํ์ ์ ๋ฏธ๋ฆฌ ์ง์ ํ์ฌ ์ ์ ์๋ ์๋ฌ๋ฅผ ํ์คํ๊ฒ ์ค์ด๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค.
์ฐธ๊ณ
'Front-end > TypeScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [WIP]TypeScript์ ๋์ ์๋ฆฌ (0) | 2025.10.25 |
|---|---|
| TS: ํ๋ก์ ํธ ์ด๊ธฐ ์ค์ (2) | 2025.07.03 |
| @types : JS ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ TS ํ๋ก์ ํธ์์ ์ฌ์ฉํ๊ธฐ (0) | 2025.07.03 |
| TypeScript์์์ ํ์ด์ง ์ด๋ : Link (0) | 2025.03.29 |
| ํ์ ์คํฌ๋ฆฝํธ(TypeScript)๋? (0) | 2025.03.26 |
GitHub