๊ธ€

JDK JRE JVM ์ž๋ฐ” ๊ฐœ๋ฐœ ๋„๊ตฌ์™€ ์‹คํ–‰ ํ™˜๊ฒฝ

์ด๋ฏธ์ง€
์ž๋ฐ”( Java )๋ฅผ ํ•œ๋ฒˆ์ด๋ผ๋„ ๊ฒฝํ—˜ํ–ˆ๋‹ค๋ฉด JDK, JRE, JVM์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋œ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋ญ”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๊ณ , ์–ด์จŒ๋“  ์ž๋ฐ”๋กœ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์€ ์•Œ๊ฒŒ ๋œ๋‹ค. JDK( Java Development Kit )๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ์™€ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์œ„ํ•œ ๋„๊ตฌ ๋ชจ์Œ์ด๊ณ , JRE( Java Runtime Environment )๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์ด๋ฉฐ, JVM( Java Virtual Machine )์€ ์ปดํŒŒ์ผ๋œ ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์ด๋‹ค. JDK, JRE, JVM ์ด ์„ธ ๊ฐ€์ง€๋Š” ์„œ๋กœ ๊ด€๋ จ๋˜์–ด ์žˆ๊ณ  ๋‹ด๋‹นํ•˜๋Š” ์—ญํ• ์€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค. JDK JRE JVM ์ž๋ฐ” ๊ฐœ๋ฐœ ๋„๊ตฌ์™€ ์‹คํ–‰ ํ™˜๊ฒฝ ์ž๋ฐ”( Java ) ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ ค๋ฉด ์ž๋ฐ” ๊ฐœ๋ฐœ ๋„๊ตฌ์™€ ์‹คํ–‰ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค. ์ž๋ฐ”๋ฅผ ์ด์šฉํ•œ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ ํ•„์š”ํ•œ 3๊ฐ€์ง€๋Š” JDK, JRE, JVM ์ด๋‹ค. JDK, JRE, JVM ์ด 3๊ฐ€์ง€๋Š” ๋ชจ๋‘ ์ž๋ฐ” ํ”Œ๋žซํผ๊ณผ ๊ด€๋ จ๋˜์–ด ์žˆ๊ณ  ์—ญํ• ๊ณผ ๋ชฉ์ ์€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค. JDK๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋„๊ตฌ์ด๋‹ค. JRE๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค. JVM์€ ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ( .class )๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๋ชจ๋‘ ์ž๋ฐ” ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๊ฒƒ์ด๊ณ , ์ž๋ฐ” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์˜ ๊ตฌ์„ฑ๊ณผ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์— ๋ชจ๋‘ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์ด๋‹ค. JDK JRE JVM JDK / Java Development Kit ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๋„๊ตฌ JDK( Java Development Kit )๋Š” ์ž๋ฐ” ๊ฐœ๋ฐœ ํ‚คํŠธ( ์ž๋ฐ” ๊ฐœ๋ฐœ ๋„๊ตฌ )๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ณ  ์ปดํŒŒ์ผํ•˜๋ฉฐ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€์ด๋‹ค. JDK์—๋Š” ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ, ์‹คํ–‰ ๋„๊ตฌ, ๋””๋ฒ„๊น… ๋„๊ตฌ, ์ž๋ฐ” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, JVM์„ ํฌํ•จํ•œ ์‹คํ–‰ ํ™˜๊ฒฝ ๋“ฑ์ด ์ œ๊ณต๋œ๋‹ค. JDK์˜ ๋Œ€ํ‘œ์ ์ธ ๋„๊ตฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. javac : ์ž๋ฐ” ์†Œ์Šค ์ฝ”๋“œ ์ปดํŒŒ์ผ java : ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ jar : JAR ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ javadoc : API ๋ฌธ์„œ ์ƒ์„ฑ j...

์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด / ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

์ด๋ฏธ์ง€
์ž๋ฐ”( Java )๋Š” ์›น ์„œ๋น„์Šค, ๊ธฐ์—…์šฉ ์—…๋ฌด ์‹œ์Šคํ…œ, ๋ฐ์Šคํฌํ†ฑ ํ”„๋กœ๊ทธ๋žจ ๋“ฑ ๋‹ค์–‘ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ( OOP )์„ ์ง€์›ํ•˜๊ณ , ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•œ ํ›„ JVM(Java Virtual Machine)์„ ํ†ตํ•ด ์‹คํ–‰ํ•œ๋‹ค. ์ž๋ฐ”์˜ ๋…ํŠนํ•œ ๊ตฌ์กฐ๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ๋‹ฌ๋ผ๋„ ํ˜ธํ™˜๋˜๊ณ , ์‹คํ–‰๋œ๋‹ค. ์ž๋ฐ”์˜ JVM ํ™˜๊ฒฝ์ด ์žˆ๋‹ค๋ฉด ์šด์˜์ฒด์ œ๊ฐ€ ๋‹ค๋ฅด๋”๋ผ๋„ ๋™์ผํ•œ ์ฝ”๋“œ์˜ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด Java๋ž€ ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ž๋ฐ”( Java )๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด( General-Purpose Programming Language )์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์‚ฌ๋žŒ์ด ์ปดํ“จํ„ฐ์— ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ๋ช…๋ นํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ ์–ธ์–ด์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ˆซ์ž๋ฅผ ๊ณ„์‚ฐํ•˜๊ฑฐ๋‚˜, ํšŒ์› ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜, ์›น ์„œ๋ฒ„์—์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. Java๋Š” ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ( OOP )์„ ์ง€์›ํ•˜๋ฉฐ, ์ •์  ํƒ€์ž… ์‹œ์Šคํ…œ์„ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค. Java ๊ธฐ์ˆ ์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ํ”„๋กœ๊ทธ๋žจ์˜ ๋ช…๋ น๊ณผ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ์ž‘์„ฑํ•˜๋Š” ์–ธ์–ด Java ํ”Œ๋žซํผ JVM๋ฅผ ์‚ฌ์šฉํ•ด Java ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์„ ์ง€์› Java๋Š” 1995๋…„ Sun Microsystems์—์„œ ๊ณต์‹ ๋ฐœํ‘œ๋˜์—ˆ์œผ๋ฉฐ, ์ดํ›„ Oracle์ด Sun Microsystems๋ฅผ ์ธ์ˆ˜ํ•˜์˜€๋‹ค. 2026๋…„ 10์›” ํ˜„์žฌ๊นŒ์ง€๋„ Java๋Š” ์ง€์†์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฒ„์ „์ด ๋ฐœํ‘œ๋˜๊ณ  ์žˆ๋‹ค. Java๋ž€ ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด Java ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘ ์‹คํ–‰ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์€ ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜์—ฌ ๋ฐ”์ดํŠธ์ฝ”๋“œ(Bytecode)๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ์‹คํ–‰ํ•œ๋‹ค. ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ž€ JVM์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •์˜๋œ ์ค‘๊ฐ„ ๋ช…๋ น์–ด ํ˜•์‹์ด๋‹ค. ์ผ๋ฐ˜์ ์ธ Java ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์†Œ์Šค ์ฝ”๋“œ ์ž‘์„ฑ Java ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ .java ํŒŒ์ผ์„ ์ž‘์„ฑ...

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ ์ œ๋„ค๋ฆญ ์ œ์•ฝ ์กฐ๊ฑด

์ด๋ฏธ์ง€
ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ œ๋„ค๋ฆญ( Typescript Generic )์€ extends ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ, ์ธํ„ฐํŽ˜์ด์Šค, keyof ๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ ํƒ€์ž… ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ์ œ๋„ค๋ฆญ์€ ๋‹ค์–‘ํ•œ ํƒ€์ž…์„ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ๋งŒ์•ฝ, ์ œ๋„ค๋ฆญ ๊ธฐ๋Šฅ์—๋„ ์ œ์•ฝ ์กฐ๊ฑด(Generic Constraints)์„ ์ถ”๊ฐ€ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด, extends ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. extends ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ œ๋„ˆ๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด, ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ถฉ์กฑํ•ด์•ผ ํ•˜๋Š” ๊ตฌ์กฐ๋‚˜ ํƒ€์ž…์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ ์ œ๋„ค๋ฆญ ์ œ์•ฝ ์กฐ๊ฑด ⊙ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ œ๋„ค๋ฆญ ์ œ์•ฝ ์กฐ๊ฑด ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ œ๋„ค๋ฆญ ์ œ์•ฝ ์กฐ๊ฑด( Typescript Generic Constraints)์€ ์ œ๋„ค๋ฆญ ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜์— ํ—ˆ์šฉ๋˜๋Š” ํƒ€์ž…์˜ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ‚ค์›Œ๋“œ๋Š” extends ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Copy function example<T extends string>(value: T): T { return value; } ์œ„ ์ฝ”๋“œ์˜ T extends string ๋ถ€๋ถ„์„ ๋ณด์ž. ์—ฌ๊ธฐ์„œ extends๋Š” ์ œ๋„ค๋ฆญ ํƒ€์ž…์— ๋Œ€ํ•œ ์ œ์•ฝ์„ ํ‘œํ˜„ํ•œ๋‹ค. ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜ T ๋Š” ๋ฌด์กฐ๊ฑด string ํƒ€์ž…์— ํ• ๋‹น ๊ฐ€๋Šฅํ•œ ํƒ€์ž…์ž„์„ ์ œํ•œํ•œ๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Copy example("Hello"); // ์ •์ƒ example("TypeScript"); // ์ •์ƒ // example(123); // ํƒ€์ž… ์˜ค๋ฅ˜ ์ˆซ์ž 123์€ string์— ํ• ๋‹นํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํƒ€์ž… ๊ฒ€์‚ฌ ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ œ๋„ค๋ฆญ ์ œ์•ฝ ์กฐ๊ฑด ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ⊙ ์ œ๋„ค๋ฆญ length ํ”„๋กœํผํ‹ฐ ์ œํ•œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ํƒ€์ž…์— length๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ํŠน์ • ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ํƒ€์ž… ์‹œ์Šคํ…œ์— ์•Œ๋ฆด ํ•„์š”๊ฐ€ ์žˆ๋‹ค. Copy funct...

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค / ํด๋ž˜์Šค ๊ตฌ์กฐ ์žฌ์‚ฌ์šฉ

์ด๋ฏธ์ง€
ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค( TypeScript Generic Class)๋Š” ํด๋ž˜์Šค ์ด๋ฆ„ ๋’ค์— <T>์™€ ๊ฐ™์€ ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค ๊ตฌ์กฐ๋ฅผ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. class Box<T>์ฒ˜๋Ÿผ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“  ๋’ค Box<number>, Box<string>์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค‘๋ณต ํด๋ž˜์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, <T>๋ฅผ ์ž„์‹œ๋กœ ํ‘œ์‹œํ•˜๋Š” ์ด๋ฆ„ ์ •๋„๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค <T> ์‚ฌ์šฉ ํด๋ž˜์Šค ๊ตฌ์กฐ ์žฌ์‚ฌ์šฉ ⊙ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ( Typescript )์˜ ์ œ๋„ค๋ฆญ(Generic)์€ ํƒ€์ž…์„ ๋งค๊ฐœ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์ „๋‹ฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ๋งŒ์•ฝ, ์ผ๋ฐ˜ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ , ํƒ€์ž…์„ number๋กœ ์„ค์ •ํ•˜๋ฉด ์ˆซ์ž๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Copy class NumberBox { value: number; constructor(value: number) { this.value = value; } } ์œ„์˜ ์ฝ”๋“œ๋Š” ์ˆซ์ž๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๋ ค๋ฉด ๋ณ„๋„์˜ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. Copy class Box<T> { value: T; constructor(value: T) { this.value = value; } } ์œ„์˜ ์ฝ”๋“œ์—์„œ T๋Š” ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜(Type Parameter)์ด๋‹ค. ์‰ฝ๊ฐœ ๋น„์œ ํ•˜๋ฉด T๋Š” ์•„์ง ๋‚ด์šฉ๋ฌผ์ด ์ •ํ•ด์ง€์ง€ ์•Š์€ ์ƒ์ž์— ๋ถ™์—ฌ ๋†“์€ ๋นˆ ๋ผ๋ฒจ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ž. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค ⊙์ œ๋„ค๋ฆญ ํด๋ž˜์Šค ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ํด๋ž˜์Šค, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ์— ์ œ๋„ค๋ฆญ์„ ํ‘œ์‹œํ•˜๋Š” <T>์™€ T๋ฅผ ์„ค์ •ํ–ˆ๋‹ค. Copy class Box<T> { value: T; constructor(value: T) { this.value = ...

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด ํƒ€์ž… ์„ ์–ธ ๋ฐฉ๋ฒ•

์ด๋ฏธ์ง€
ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ( Typescript )์—์„œ ๋ฐฐ์—ด ํƒ€์ž…์€ ๋ฐฐ์—ด์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ์ž๋ฃŒํ˜•์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ฌธ์ž์—ด ๋ฐฐ์—ด์€ ๋ฌธ์ž์—ด๋งŒ, ์ˆซ์ž ๋ฐฐ์—ด์€ ์ˆซ์ž๋งŒ ์ €์žฅํ•˜๋„๋ก ํƒ€์ž…์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค. ๋ฐฐ์—ด ํƒ€์ž…์„ ์„ ์–ธ ๋ฐฉ์‹์€ ์š”์†Œ ํƒ€์ž… ๋’ค์— `[] (๋ฐฐ์—ด์„ ์˜๋ฏธํ•˜๋Š” ํ‘œ๊ธฐ )`๋ฅผ ๋ถ™์ด๋Š” ๋ฐฉ์‹์ด๋ฉฐ, ์ œ๋„ค๋ฆญ ํ˜•ํƒœ์˜ ๋ฐฐ์—ด ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ž๋ฃŒํ˜•์„ ํ•จ๊ป˜ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์œ ๋‹ˆ์˜จ ํƒ€์ž…์„ ๋ฐฐ์—ด ํƒ€์ž…์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด ๋ฐฐ์—ด๋„ ๊ฐ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•  ์†์„ฑ๊ณผ ์†์„ฑ ํƒ€์ž…์„ ์ •์˜ํ•˜์—ฌ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฐ์—ด ํƒ€์ž…์„ ๋ช…์‹œํ•˜๋ฉด ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฐฐ์—ด์— ์ž˜๋ชป๋œ ์ž๋ฃŒํ˜•์˜ ๊ฐ’์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์„ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ๋ณด์žฅ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜์—์„œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜๊ฐ’์—๋„ ๋ฐฐ์—ด ํƒ€์ž…์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด ํƒ€์ž… ์„ ์–ธ ๋ฐฉ๋ฒ• ํƒ€์ž…[] ํ˜•ํƒœ๋กœ ๋ฐฐ์—ด ํƒ€์ž… ์„ ์–ธํ•˜๊ธฐ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ํƒ€์ž… ๋ฐฐ์—ด( ํƒ€์ž…[] )์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž… ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์š”์†Œ์˜ ํƒ€์ž… ๋’ค์— []๋ฅผ ๋ถ™์ด๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ˆซ์ž๋งŒ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด์ด๋ผ๋ฉด number[], ๋ฌธ์ž์—ด๋งŒ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด์ด๋ผ๋ฉด string[]์ฒ˜๋Ÿผ ์„ ์–ธํ•œ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ๋ฐฐ์—ด ํƒ€์ž…์€ ๋ฐฐ์—ด์— ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ’์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์„ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ๊ฒ€์‚ฌํ•œ๋‹ค. Copy /** */ const scores: number[] = [90, 80, 70]; scores.push(100); /* ๊ฐ€๋Šฅ */ /* scores.push("A"); ์˜ค๋ฅ˜: string ํƒ€์ž…์˜ ๊ฐ’์€ number[] ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค. */ console.log(scores); scores๋Š” number[] ํƒ€์ž…๋ฐฐ์—ด๋กœ ์„ ์–ธํ–ˆ์œผ๋ฉฐ, ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋Š” number ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค. ์ˆซ์žํ˜•ํƒœ 100์€ number ํƒ€์ž…์ด๋ฉฐ, ๋ฐฐ์—ด์— ์ •์ƒ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. "A"๋Š” string ํƒ€์ž…์ด๊ธฐ์— number[] ํƒ€์ž…์ธ scores ๋ฐฐ์—ด์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค. ํƒ€์ž…[] ํ˜•ํƒœ๋กœ ๋ฐฐ์—ด ํƒ€์ž… ์„ ์–ธํ•˜๊ธฐ ...

๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค ์ฝ”๋“œ VSCode ์„ค์น˜ํ•˜๊ธฐ - ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€

์ด๋ฏธ์ง€
VSCode( ๋น„์ฃผ์–ผ์ŠคํŠœ๋””์˜ค์ฝ”๋“œ, Visual Studio Code )๋Š” ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ( Microsoft )์—์„œ ์ œ๊ณตํ•˜๋Š” ์žˆ๋Š” ๋ฌด๋ฃŒ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋ฉฐ, ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์„ค์น˜ํ•˜์—ฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์œˆ๋„์šฐ์ฆˆ, ๋งฅOS, ๋ฆฌ๋ˆ…์Šค( Windows, macOS, Linux )์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€๋ฅผ ํ†ตํ•ด ์ž์‹ ์˜ ์šด์˜์ฒด์ œ์— ๋งž๋Š” ์„ค์น˜ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ๋ฐ›๊ณ  ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์œˆ๋„์šฐ์ฆˆ์˜ ๊ฒฝ์šฐ, ์ธ์Šคํ†จ๋Ÿฌ ํŒŒ์ผ( Installer )๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ค์น˜ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•œ ๋‹ค์Œ ํ™”๋ฉด์˜ ์•ˆ๋‚ด์— ๋”ฐ๋ผ VSCode ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค. ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด VSCode๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ž์‹ ์ด ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค ์ฝ”๋“œ ์„ค์น˜ํ•˜๊ธฐ - ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ VSCode ๋ฌด๋ฃŒ ์†Œ์Šค ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ VSCode(๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค ์ฝ”๋“œ, Visual Studio Code)๋Š” Microsoft์—์„œ ๊ฐœ๋ฐœํ•œ ๋ฌด๋ฃŒ ์†Œ์Šค ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์ด๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๋ž€ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑํ•œ ๋ช…๋ น๋ฌธ์˜ ์ง‘ํ•ฉ์ด๋ฉฐ, VSCode์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. VSCode์˜ ํŠน์ง•์„ ๋ณด์ž. ๋ฌด๋ฃŒ ์‚ฌ์šฉ VSCode ๊ธฐ๋ณธ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฌด๋ฃŒ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์‚ฌ์šฉ ๋‹ค์ค‘ ์šด์˜์ฒด์ œ Windows, macOS, Linux๋ฅผ ์ง€์› ์ฝ”๋“œ ํŽธ์ง‘ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ˆ˜์ • ๊ฐ€๋Šฅ ํ™•์žฅ ๊ธฐ๋Šฅ Extensions๋ฅผ ์ด์šฉํ•˜์—ฌ ์–ธ์–ด ์ง€์›๊ณผ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ์ถ”๊ฐ€ ๋””๋ฒ„๊น… ์ง€์›๋˜๋Š” ์–ธ์–ด์™€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜๋ฅผ ์กฐ์‚ฌ Git ํ†ตํ•ฉ Git์„ ์ด์šฉํ•œ ์†Œ์Šค ์ฝ”๋“œ ๋ณ€๊ฒฝ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณต VSCode ์ž์ฒด๋Š” ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์ด๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋”ฐ๋ผ ์ปดํŒŒ์ผ๋Ÿฌ, ์‹คํ–‰ ํ™˜๊ฒฝ, ๊ฐœ๋ฐœ ๋„๊ตฌ ๋“ฑ์„ ๋ณ„๋„๋กœ ์„ค์น˜ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๋งŒ์•ฝ, Java ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” VSCode ์™ธ์— JDK์™€ ๊ด€๋ จ ํ™•์žฅ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๋‹ค. VSCode ๋ฌด๋ฃŒ ์†Œ์Šค ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ VSCode ์„ค์น˜ ์ „ ํ™•์ธ ์‚ฌํ•ญ VSCo...