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

TypeScript

(3)
[ TS ] TypeScript 5.4 ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์•Œ์•„๋ณด๊ธฐ. 2024๋…„ 1์›” 24์ผ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ 5.4 ๋ฒ ํƒ€ ๋ฒ„์ „ ๋ฐœํ‘œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด ํฌ์ŠคํŒ…์€ ํ•ด๋‹น ๋ธ”๋กœ๊ทธ๋ฅผ ๋ณด๊ณ  ๊ณต๋ถ€ํ•˜๊ณ ์ž ํŒŒํŒŒ๊ณ ์™€ ํ•จ๊ป˜ ๋ฒˆ์—ญํ•˜๋ฉฐ ์˜ฎ๊ธด ๊ธ€์ด๋‹ค. (โ€ป์˜ค์—ญ ์ฃผ์˜) ์šฐ์„  TypeScript 5.4 beta ๋ฒ„์ „์€ ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. npm install -D typescript@beta TypeScript 5.4์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์†Œ๊ฐœํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 1. Preserved Narrowing in Clousures Following Last Assignments ๋งˆ์ง€๋ง‰ ํ• ๋‹น ํ›„ ํด๋กœ์ ธ์—์„œ ๋ฒ”์œ„๊ฐ€ ์ข์•„์ง€๋„๋ก ํƒ€์ž…์„ ์œ ์ง€(๋ณด์กด)ํ•˜๋‹ค. 2. NoInfer Utility Type NoInfer ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž… 3. Object.groupBy and Map.groupBy O..
[ TypeScript ] ํ˜‘์—…์„ ์œ„ํ•œ interface ์— ํžŒํŠธ ์ฃผ์„ ๋‹ฌ๊ธฐ. ts๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœ ์ค‘์— interface์— ์ถ”๊ฐ€์ ์ธ ์„ค๋ช…์ด ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค~! ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ํ‰์†Œ์—๋Š” method๋‚˜ method parameter์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋‹ฌ์•„์ค„ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋˜ JSDoc์„ ์ด์šฉํ•˜์—ฌ interface ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•ด ๋ณด์•˜๋‹ค. ๋จผ์ € JSDoc์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์ž๋ฉด, JSDoc์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์šฉ API ๋ฌธ์„œ ์ƒ์„ฑ๊ธฐ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ API๋ฅผ ๋ฌธ์„œํ™”ํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. module, namespaces, classes, methods, method parameters ๋“ฑ๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ๋“ค์„ ๋ฌธ์„œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. JSDoc์€ ์ฝ”๋“œ ์ž์ฒด์™€ ํ•จ๊ป˜ ์†Œ์Šค์ฝ”๋“œ์— ์ง์ ‘ ๋ฌธ์„œ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค. JSDoc ์ฃผ์„์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์„œํ™”ํ•˜๋ ค๋Š” ์ฝ”๋“œ ๋ฐ”๋กœ ์•ž์— ์œ„์น˜..
[TS] ํ”„๋กœ์ ํŠธ์— tsconfig ์„ค์ •ํ•˜๊ธฐ. ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜์Œ ์„ธํŒ…ํ•  ๋•Œ, TypeScript ๋กœ ํƒ€์ž… ์ฒดํฌ๋ฅผ ์–ด๋””๊นŒ์ง€ ํ—ˆ์šฉํ• ์ง€, ์–ด๋–ค ์„ค์ •์œผ๋กœ ์šฐ๋ฆฌ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์“ธ์ง€ ๊ณ ๋ฏผํ•˜๋˜ ์ค‘ ํŒ€์›๋“ค(+๋‚˜)์˜ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋Šฅ์ˆ™๋„๊ฐ€ ๊ทธ๋ฆฌ ๋†’์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์–ด ๊ธฐ๋ณธ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์„ธํŒ…์„ ํ•˜๋ฉฐ ์“ฐ๋Š” ๊ธ€. tsconfig.json ์„ค์ • fucntion add(a,b){ return a+b; } add(10, null); // noImplicitAny ์„ค์ •์ด ๊บผ์ ธ์žˆ๋‹ค๋ฉด ์œ„์˜ ์ฝ”๋“œ๋Š” ํƒ€์ž…์ฒด์ปค๋ฅผ ํ†ต๊ณผํ•˜๊ณ , // noImplicitAny ์„ค์ •์ด ์ผœ์ ธ์žˆ๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋œ๋‹ค. **์œ„์˜ ์˜ˆ์‹œ์˜ ๊ฒฝ์šฐ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ์„ค์ •์— ๋”ฐ๋ผ ๋™์ผ ์ฝ”๋“œ๋ผ๋„ ํƒ€์ž… ์ฒด์ปค์˜ ํ†ต๊ณผ ๊ฐ€๋Šฅ์—ฌ๋ถ€๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์„ค์ •์ด 100๊ฐœ ๊ฐ€๊นŒ์ด ๋˜๊ธฐ๋•Œ๋ฌธ์—, ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ ์–ด๋–ค ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š”์ง€..