Dev

Type (Alias) over Interface

Jun Park ๐ŸŽต 2023. 4. 5. 23:44

2023๋…„ 12์›” 6์ผ ๊ธฐ์ค€ Interface over Type Alias๋กœ ์ƒ๊ฐ์„ ๋ฐ”๊ฟจ๋‹ค.

 

TypeScript ๊ณต์‹ ๋ฌธ์„œ์™€ ์ธํ„ฐ๋„ท์˜ ๊ธ€ ๋Œ€๋‹ค์ˆ˜๋Š” Interface over Type Alias๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” Type Alias๋ฅผ extends ๋˜๋Š” implements์˜ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ Interface๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๊ณ  ํŽธํ–ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ์ฆ‰ Interface๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ Type Alias๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

ํ˜„์žฌ๋Š” Type Alias๋ฅผ extends ๋˜๋Š” implements์˜ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ๋Š” ๋‹จ์ˆœํžˆ ํŽธํ•˜๋‹ค๋Š” ์ด์œ ๋งŒ์œผ๋กœ Interface over Type Alias๋ฅผ ๊ถŒ์žฅํ•  ์ˆ˜ ์—†๋‹ค.

 

๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ Interface์™€ Type์„ ๋‹ค์Œ์ฒ˜๋Ÿผ ์ดํ•ดํ•œ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํŒจ๋Ÿฌ๋‹ค์ž„์— ๊ทผ๊ฑฐํ•˜์—ฌ ๊ฐ์ฒด ๋ช…์„ธ๋ฅผ ์„ ์–ธํ•˜๋Š” Interface. ๋ชจ๋“  ํƒ€์ž…(Primitive, Object, Function, etc...)์— ๋Œ€ํ•ด ์ƒˆ ์ด๋ฆ„์„ ์„ ์–ธํ•˜๋Š” Type. 

 

Type Alias over Interface

Interface์˜ ๋งŽ์€ ๊ธฐ๋Šฅ์„ Type Alias๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ์ ์„ ์ด์šฉํ•˜์—ฌ, ์˜คํžˆ๋ ค Interface๋ฅผ ์ œํ•œํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–จ๊นŒ? Interface๋ฅผ Object Literal์˜ Type ์„ ์–ธ์ด ์•„๋‹Œ ํ™•์žฅ ๊ธฐ๋Šฅ์˜ ์šฉ๋„๋กœ๋งŒ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

Type๊ณผ ๋‹ฌ๋ฆฌ Interface๋Š” Declaration Merging์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ž˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ํ˜„์žฌ Type์ด ๊ฐ–์ง€ ์•Š๋Š” Interface์˜ ํŠน์„ฑ์ด๋‹ค. ๋ชจ๋“ˆ์ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๋•Œ ๋ฏธ๋ž˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํ™•์žฅํ•˜์—ฌ ์‚ฌ์šฉํ•  Type๋งŒ Interface๋กœ๋งŒ ์„ ์–ธํ•œ๋‹ค.

 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋ฐœ์ž๋Š” ๊ฐœ๋ฐœ ์‹œ์ ์— ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์— ๋Œ€ํ•ด ๊ณ ๋ คํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์ž๋Š” ์‚ฌ์šฉ ์‹œ์ ์— ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์— ๋Œ€ํ•ด ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ๋กœ๋Š” emotion์˜ Theme ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. emotion์€ Theme Interface๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•œ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ํ™•์žฅ์„ ์„ ์–ธํ•˜๋Š” ํŒŒ์ผ์ด ์•„๋‹Œ ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ ๋“ฑ์—์„œ๋„ ๋‹จ์ˆœํžˆ emotion์˜ Theme์„ importํ•˜์—ฌ TypeScript์˜ ์žฅ์ ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.