๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

TypeScript

(2)
TypeScript ์™€ Redux ๋ฅผ ์ด์šฉํ•˜์—ฌ Todo-List ๋งŒ๋“ค๊ธฐ (Feat. typesafe-actions) TypeScript์˜ ๊ธฐ์ดˆ๋ฅผ ์•Œ์•„๋ณด์•˜๊ณ  Redux์˜ ์‚ฌ์šฉ๋ฒ•๋„ ์•Œ์•˜์œผ๋‹ˆ TypeScript์™€ Redux๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Todo-List๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž ์ด ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š” TypeScriptํ™˜๊ฒฝ์—์„œ Redux๋ฅผ ๋”์šฑ ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด typesafe-actions ๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค Redux์—์„œ๋Š” redux-actions๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์ง€๋งŒ TypeScript ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์ง€ ์•Š๋‹ค ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ถ€๋ถ„ Container ์ปดํฌ๋„ŒํŠธ์™€ ํ™”๋ฉด์„ ํ‘œํ˜„ํ•˜๋Š” ๋ถ€๋ถ„ Presentational ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜์˜€๋‹ค. ์•„๋ž˜๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด์ž components ํด๋”์—๋Š” Presentational ์ปดํฌ๋„ŒํŠธ๋“ค์ด , containers ํด๋”์—๋Š” container ์ปดํฌ๋„ŒํŠธ, ๊ทธ๋ฆฌ๊ณ ..
ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์‹œ์ž‘ํ•˜๊ธฐ ๋ฆฌ๋•์Šค๋ฅผ ๋ฐฐ์šฐ๊ณ  ๋‚˜์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฐ์šฐ๋ คํ•œ๋‹ค ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์•Œ๊ณ ๋‚˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋„ˆ๋ฌด๋„ˆ๋ฌด ๋ถˆํŽธํ•˜๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ํ•œ๋ฒˆ ์ฒดํ—˜ํ•ด๋ณด์ž ..! โ“ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์จ์•ผํ•˜๋Š” ์ด์œ  ์—๋Ÿฌ์˜ ์‚ฌ์ „ ๋ฐฉ์ง€๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋ฉด ๋งŽ์€ ์‹ค์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค function sum(a: number, b: number) { return a + b; } ์œ„์™€ ๊ฐ™์ด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ sum์ด๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  sum(10, 20); // 30 sum('10', '20'); // error ์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ, ์ฒซ๋ฒˆ์งธ ํ˜ธ์ถœ์€ ํ˜ธ์ถœ ์ธ์ž๋กœ number๊ฐ€ ๋“ค์–ด๊ฐ€์„œ ๋‘ ์ˆซ์ž๋ฅผ ํ•ฉํ•œ ๊ฐ’์„ ๋ฆฌํ„ด๋ฐ›์ง€๋งŒ ๋‘๋ฒˆ์งธ ํ˜ธ์ถœ์€ string ํƒ€์ž…์ด ๋“ค์–ด๊ฐ”๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๊ฒŒ ๋œ๋‹ค ์ด๋ฐ–์—๋„ ์ด์ƒํ•œ ์˜คํƒ€๋ฅผ ๋‚ธ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ํƒ€์ž…๋ผ๋ฆฌ..