TypeScript
: ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ, ์ ์ ํ์ ๋ฌธ๋ฒ์ ์ถ๊ฐํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
ํน์ง
1. ์ปดํ์ผ ์ธ์ด, ์ ์ ํ์ ์ธ์ด
โ js๋ ๋์ ํ์ ์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด → ๋ฐํ์์์ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌ
ts ์ปดํ์ผ๋ฌ ๋๋ ๋ฐ๋ฒจ(Babel)๋ฅผ ํตํด js๋ก ๋ณํ๋จ
์ฝ๋ ์์ฑ ๋จ๊ณ์์ ํ์ ์ ์ฒดํฌํด ์ค๋ฅ๋ฅผ ํ์ธํ๊ณ , ๋ฏธ๋ฆฌ ํ์ ์ ๊ฒฐ์ ํ์ฌ ์คํ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฆ.
but, ์ฝ๋ ์์ฑ ์ ๋งค๋ฒ ํ์ ์ ๊ฒฐ์ ํด์ผ ํด ๋ฒ๊ฑฐ๋กญ๊ณ ์ฝ๋๋์ด ์ฆ๊ฐํ๋ฉฐ ์ปดํ์ผ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆผ.
*๋ฐ๋ฒจ(Babel) : ํธํ
: ECMAScript 2015+ ์ฝ๋๋ฅผ ์ด์ JavaScript ์์ง์์ ์คํํ ์ ์๋ ์ด์ ๋ฒ์ ๊ณผ ํธํ๋๋ JavaScript ์ฝ๋๋ก ๋ณํํ๋ JavaScript ํธ๋์ค์ปดํ์ผ๋ฌ
= ์ด์ ๋ธ๋ผ์ฐ์ (์คํ ํ๊ฒฝ)์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ํญ์ ์ต์ ๋ฌธ๋ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฝ๋ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ๋๊ตฌ
- ๋ฐ๋ฒจ์ js์ ์ต์ ๋ฌธ๋ฒ ๋ฟ๋ง ์๋๋ผ TypeScript๋ JSX๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ๋ณํํ ๋๋ ๋ง์ด ์ฌ์ฉ๋๋ค.
- React์ ๊ฒฝ์ฐ, JSX ๋ฌธ๋ฒ์ ์ฌ์ฉํด ์ฝ๋ฉ์ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์๋ณธ ์ฝ๋๋ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋์ง ์๋๋ค.
๋ฐ๋ผ์ Webpack ๋ฒ๋ค๋ฌ์ Babel ๋ก๋๋ฅผ ์ด์ฉํด React ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ค.
*ํธ๋์คํ์ผ๋ฌ : ๋ค๋ฅธ ์คํ ํ๊ฒฝ์์๋ ๋์๊ฐ ์ ์๋๋ก ๊ฐ์ ์ธ์ด๋ฅผ ์ ์งํ์ฒด ์์ค ์ฝ๋์ ํํ๋ง ๋ฐ๊พธ๋ ๊ณผ์ ์ ์๋ฏธ
2. ์๋ฐ์คํฌ๋ฆฝํธ ์ํผ์ (Superset)
: JS ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ TS ๋ฌธ๋ฒ์ ์ถ๊ฐํ ์ธ์ด
์ ํจํ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑํ ์ฝ๋๋ ํ์ฅ์๋ฅผ .js์์ .ts๋ก ๋ณ๊ฒฝํ๊ณ ํ์ ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผํด ๋ณํํ ์ ์๋ค.
3. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ง์
TS๋ ES6์์ ์ฌ์ฉ๋ ๋ฌธ๋ฒ์ ํฌํจํ๊ณ ์์ผ๋ฉฐ, ํด๋์ค, ์ธํฐํ์ด์ค, ์์, ๋ชจ๋ ๋ฑ๊ณผ ๊ฐ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ํจํด์ ์ ๊ณตํฉ๋๋ค.
์ฅ์
1. ๋์ ์์ค์ ์ฝ๋ ํ์๊ณผ ๋๋ฒ๊น
- ์๋ฌ์ ์ฌ์ ๋ฐฉ์ง
- ์ฝ๋์ ๋ชฉ์ ์ ๋ช ์ํ๊ณ ๋ชฉ์ ์ ๋ง์ง ์๋ ํ์ ์ ๋ณ์๋ ํจ์๋ค์์ ์๋ฌ๋ฅผ ๋ฐ์์์ผ ๋ฒ๊ทธ๋ฅผ ์ฌ์ ์ ์ ๊ฑฐํ๋ค.
- ์ฝ๋ ๊ฐ์ด๋ ๋ฐ ์๋ ์์ฑ(๊ฐ๋ฐ ์์ฐ์ฑ ํฅ์)
- ์์ ๊ณผ ๋์์ ๋๋ฒ๊น ์ด ๊ฐ๋ฅํ๋ค
2. ์๋ฐ์คํฌ๋ฆฝํธ ํธํ
TS๋ JS์ 100% ํธํ์ด ๊ฐ๋ฅ → ํ๋ก ํธ, ๋ฐฑ์๋ ์ด๋๋ JS๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ณณ์ด๋ผ๋ฉด TS๋ ์ธ ์ ์๋ค.
3. ๊ฐ๋ ฅํ ์ํ๊ณ
TS๋ ์ ์ ์ธ์ด์์๋, ๋๋ถ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด TS๋ฅผ ์ง์ํ๋ฉฐ, ๊ฐ์ข ์๋ํฐ๊ฐ TS ๊ด๋ จ ๊ธฐ๋ฅ๊ณผ ํ๋ฌ๊ทธ์ธ์ ์ง์ํ๋ค.
4. ์ ์ง์ ์ ํ ๊ฐ๋ฅ
๊ธฐ์กด JSํ๋ก์ ํธ๋ฅผ TS๋ก ์ ํํ๋๋ฐ ๋ถ๋ด์ด ์๋ค๋ฉด, ์ถ๊ฐ ๊ธฐ๋ฅ์ด๋ ํน์ ๊ธฐ๋ฅ์๋ง TS๋ฅผ ๋์ ํ์ฌ ํ๋ก์ ํธ๋ฅผ ์ ์ง์ ์ผ๋ก ์ ํํ ์ ์๋ค → ์ฝ๋๋ฒ ์ด์ค๊ฐ ์์ ํ ๋ฐ๋๋๋ก ์ค๋น ๊ธฐ๊ฐ์ ๊ฐ์ง ์ ์๋ค.
TypeScript ๋ฌธ๋ฒ
// ๋ณ์์ ํ์
์ค์
let str: string = 'hi';
let num: number = 100;
let arr: Array = [1, 2, 3];
let arr2: number[] = [1, 2, 3];
let obj: object = {};
let obj2: { name: string, age: number} = {
name: 'hoho',
age: 22
};
// ํจ์์ ํ์
์ค์
function add(a: number, b: number): number {
return a+b;
}
//์ต์
๋ ํ๋ผ๋ฏธํฐ
function log(a: string, b?: string, c?: string) {
console.log(a);
}
// ์ถ๊ฐ์ ์ธ ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ์๋ ์ฐธ๊ณ ์ฃผ์์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
์ฐธ๊ณ
ํ์ ์คํฌ๋ฆฝํธ
https://www.samsungsds.com/kr/insights/typescript.html
๋ฐ๋ฒจ https://bravenamme.github.io/2020/02/12/what-is-babel/ https://www.daleseo.com/js-babel/ |
'javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ ์คํฌ๋ฆฝํธ ์ ๋ฌธ, ๊ธฐ๋ณธ ๋ฌธ๋ฒ (0) | 2023.09.22 |
---|---|
Array์ ํท๊ฐ๋ฆฌ๋ ๋ฉ์๋ ์ ๋ฆฌ(Array.from, arr.sort, arr.shift, arr.unshift) (0) | 2023.09.04 |
react-query ๊ฐ๋ , ๊ธฐ๋ณธ ๋ฌธ๋ฒ (0) | 2023.06.01 |
Javascript ๋ฐ๋ณต๋ฌธ (forEach, map, filter, reduce) (0) | 2022.02.09 |
Javascript ๊ฐ์ฒด(๋ฌธ์ ๊ฐ์ฒด๋ชจ๋ธ(DOM),๋ธ๋ผ์ฐ์ ๊ฐ์ฒด๋ชจ๋ธ(BOM) ,๋ด์ฅ๊ฐ์ฒด) (0) | 2022.01.17 |