Studying Web Development/Free Memo

[TypeScript] Interface์™€ Class์˜ ์ฐจ์ด์ 

Esoolgnah 2022. 7. 21. 21:16
728x90

 

๐Ÿ“• ๊ธฐ๋ณธ ์ •์˜

์ธํ„ฐํŽ˜์ด์Šค

  • ์ธํ„ฐํŽ˜์ด์Šค๋Š” ES6๊ฐ€ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋งŒ์˜ ํŠน์ง•์ž…๋‹ˆ๋‹ค.
  • ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํƒ€์ž…์ด๋ฉฐ ์ปดํŒŒ์ผ ํ›„์— ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
  • ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์„ ์–ธ๊ณผ ๊ตฌํ˜„์ด ๋ชจ๋‘ ์กด์žฌํ•˜์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์„ ์–ธ๋งŒ ์กด์žฌํ•˜๋ฉฐ, ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์™€ ๋ฉค๋ฒ„ ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ ‘๊ทผ ์ œํ•œ์ž๋Š” ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค์™€ ๋‹ฌ๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค๋Š” TypeScript์˜ ์ปจํ…์ŠคํŠธ ๋‚ด์—์„œ๋งŒ ์กด์žฌํ•˜๋Š” ๊ฐ€์ƒ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
  • TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํƒ€์ž… ์ฒดํฌ ๋ชฉ์ ์œผ๋กœ๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ JavaScript ์–ธ์–ด๋กœ ํŠธ๋žœ์Šค ํŒŒ์ผ๋˜๋ฉด ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

ํด๋ž˜์Šค

  • ํด๋ž˜์Šค๋Š” ES6์—์„œ JavaScript ์ƒํƒœ๊ณ„์— ๊ณต์‹์ ์œผ๋กœ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ทธ ์ž์ฒด์ž…๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ปค๋‹ค๋ž€ ๋ฌธ์ œ๋ฅผ ํด๋ž˜์Šค๋ผ๋Š” ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ณ  ํด๋ž˜์Šค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ ์ฝ”๋“œ ์ค‘๋ณต์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค ๊ฐ„์˜ ๊ด€๊ณ„๋Š” ์ƒ์†์ด๋‚˜ ํฌํ•จ ๊ด€๊ณ„๋ฅผ ๊ณ ๋ คํ•ด ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ›  ์‚ฌ์šฉ ์šฉ๋„

์ธํ„ฐํŽ˜์ด์Šค

  • ์ปค์Šคํ…€ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” ํ•„์ˆ˜ ํ•ญ๋ชฉ์œผ๋กœ ์‚ฌ์šฉํ•  ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ ์–ธํ•ด์„œ, ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๋Š” ์ธ์ž์˜ ํ˜•์‹์„ ๊ณ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ธ์ž๋กœ ๋ฐ›๋Š” ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๋•Œ TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ธ์ž์˜ ์œ ํšจ์„ฑ์„ ๋จผ์ € ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ์˜ ํ˜•ํƒœ๋งŒ ์„ ์–ธํ•ด์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ , ์ดํ›„์— ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•  ๋•Œ implements ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์ •ํ•˜๋ฉด, ์ด ํด๋ž˜์Šค๋Š” ์ถ”์ƒํ•จ์ˆ˜๋กœ ์„ ์–ธ๋œ ๋ฉ”์†Œ๋“œ์˜ ๋ชธ์ฒด๋ฅผ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

 

ํด๋ž˜์Šค

  • ๊ฐ์ฒด ํŒฉํ† ๋ฆฌ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์˜ ๋ชจ์–‘๊ณผ ๋™์ž‘์— ๋Œ€ํ•œ ์ฒญ์‚ฌ์ง„์„ ์ •์˜ํ•œ ๋‹ค์Œ ํด๋ž˜์Šค ์†์„ฑ์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  method๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜์™€ ์ •์˜๋œ property๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. 

 

 

โ“ ์ถ”์ƒ ํด๋ž˜์Šค๋ž€?

์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๊ตฌ์ฒด ํด๋ž˜์Šค๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ์†์„ฑ๊ณผ ํ•จ์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๊ตฌ์ฒด ํด๋ž˜์Šค์˜ ์„ค๊ณ„์„œ ํ˜น์€ ๋„๋ฉด์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๊ตฌ์ฒด ํด๋ž˜์Šค์˜ ๋„๋ฉด ํ˜น์€ ์„ค๊ณ„์„œ์ด๋ฏ€๋กœ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ, ์ถ”์ƒ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ TypeScript๋Š” Cannot create an instance of an abstract class.๋ผ๋Š” ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

 

โ“ TypeScript์˜ ์ถ”์ƒ ํด๋ž˜์Šค

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ(TypeScript)์—์„œ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์šฉ๋„๋Š” ํ•˜์œ„ ํด๋ž˜์Šค(=๊ตฌ์ฒด ํด๋ž˜์Šค)์—์„œ ๊ณตํ†ต ๋™์ž‘์„ ์ฐพ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด ์ธ์Šคํ„ด์Šคํ™”ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ์ „์ œํ•˜์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ‘จ๐Ÿป‍โš–๏ธ ๊ฒฐ๋ก 

  • newํ‚ค์›Œ๋“œ๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ์ƒ์†์˜ ๊ตฌํ˜„๋งŒ ํ• ๊ฒƒ์ด๋ผ๋ฉด Interface๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.
  • ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค๋Š” ํ• ๋‹น๋˜๋Š” ๋ฌธ๋ฒ•์ด ๋”ฐ๋กœ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต ๊ฐ์ฒด์—์„œ Interface๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

์ฐธ๊ณ 


์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ ์˜ˆ์‹œ๋“ค์„ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์˜ ๋งํฌ๋“ค๋กœ ์ด๋™ํ•ด์„œ ์ฝ์–ด์ฃผ์„ธ์š”. ์•„๋ž˜์˜ ๊ธ€๋“ค์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

[์งค๋ง‰๊ธ€] Interface์™€ Class์˜ ์ฐจ์ด์ 

์•ˆ๋…•ํ•˜์„ธ์š”. ๊น€์šฉ์„ฑ์ž…๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ง€๋‚œ ํฌ์ŠคํŒ… TypeScript๊ฐœ๋ก  5ํŽธ์—์„œ Class์— ๋Œ€ํ•ด ์„ค๋ช…๋“œ๋ ธ๋Š”๋ฐ์š”. ์ €์˜ ๊ฒฝ์šฐ Interface์™€ Class๊ฐ€ ๋งŽ์ด ํ—ท๊ฐˆ๋ ธ์—ˆ์–ด์š”. ์—ฌ๋Ÿฌ๋ถ„๋“ค๋„ ๊ทธ๋Ÿฐ๊ฐ€์š”? ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š”

velog.io

 

TypeScript ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP, Object-Oriented Programming)์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์ฝ”๋“œ ์ค‘๋ณต์„ ํš๊ธฐ์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ปค๋‹ค๋ž€ ๋ฌธ์ œ๋ฅผ ํด๋ž˜์Šค๋ผ๋Š” ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ณ 

velog.io

 

[TypeScript]์ถ”์ƒ ํด๋ž˜์Šค(Abstract Class)

์ถ”์ƒํ™”(Abstraction) ์ถ”์ƒํ™”๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP:Object-Oriented Programming)์˜ ํ•ต์‹ฌ ์•„์ด์ด๋””์–ด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋ณต์žก์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๊ณ ๊ธ‰ ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ธฐ์ˆ ์ด๋ฉฐ, ํ•˜

developer-talk.tistory.com

 

 

๋ฐ˜์‘ํ˜•