Minsu's Dev Log

Written by@[Minsu Kim]
๐ŸŒˆ22์‚ด ๋Œ€ํ•™์ƒ ํ•™์ƒ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๐Ÿ™‚

ReScript ๊ณต์‹๋ฌธ์„œ๋กœ ReScript ํ›‘์–ด๋ณด๊ธฐ (10)

๋ณธ ํฌ์ŠคํŠธ๋Š” ReScript ๊ณต์‹๋ฌธ์„œ๋ฅผ ์Šคํ„ฐ๋””ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Array and List Array Array๋Š” ReScript์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •๋ ฌ๋œ ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค. JavaScript์˜ ๋ฐฐ์—ด๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ReScript์˜ ๋ฐฐ์—ด์˜ ๊ฐ ํ•ญ๋ชฉ์€ ํƒ€์ž…์ด ๋™์ผํ•ด์•ผ ํ•œ๋‹ค. Arrโ€ฆ

ReScript ๊ณต์‹๋ฌธ์„œ๋กœ ReScript ํ›‘์–ด๋ณด๊ธฐ (9)

๋ณธ ํฌ์ŠคํŠธ๋Š” ReScript ๊ณต์‹๋ฌธ์„œ๋ฅผ ์Šคํ„ฐ๋””ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Null, Undefined and Option ReScriptt์—๋Š” ๋˜๋Š” ๊ฐœ๋…์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋“  ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋ฒ„๊ทธ๋ฅผ ์—†์• ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์ข‹์€ ์ผ์ด๋‹ค. ๋”์ด์ƒ ์ด๋‚˜ ๋ฅผ ๋งˆ์ฃผ์น  ์ผ์ด ์—†๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ž ์žฌ์ ์œผ๋กœ ์กดโ€ฆ

ReScript ๊ณต์‹๋ฌธ์„œ๋กœ ReScript ํ›‘์–ด๋ณด๊ธฐ (8)

๋ณธ ํฌ์ŠคํŠธ๋Š” ReScript ๊ณต์‹๋ฌธ์„œ๋ฅผ ์Šคํ„ฐ๋””ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Variant ์ง€๊ธˆ๊นŒ์ง€ ์‚ดํŽด๋ณธ ๋Œ€๋ถ€๋ถ„์˜ ReScript์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ต์ˆ™ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์ ˆ์—์„œ๋Š” ๋งค์šฐ ์ค‘์š”ํ•˜๋ฉด์„œ๋„ ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์ž๋ฃŒ๊ตฌ์กฐ์ธ Variant๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” โ€œ์ด๊ฒƒ and โ€ฆ

ReScript ๊ณต์‹๋ฌธ์„œ๋กœ ReScript ํ›‘์–ด๋ณด๊ธฐ (7)

๋ณธ ํฌ์ŠคํŠธ๋Š” ReScript ๊ณต์‹๋ฌธ์„œ๋ฅผ ์Šคํ„ฐ๋””ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Object ReScript์˜ Objectํƒ€์ž…์€ Recordํƒ€์ž…๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค. ํƒ€์ž… ์„ ์–ธ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค. Recordํƒ€์ž…๊ณผ ๋‹ค๋ฅด๊ฒŒ ๊ตฌ์กฐ์ ์ด๊ณ  ๋‹คํ˜•์„ฑ์ด ๊ฐ•ํ•˜๋‹ค. ๊ฐ์ฒด๊ฐ€ JavaScript์ชฝ์—์„œ โ€ฆ

ReScript ๊ณต์‹๋ฌธ์„œ๋กœ ReScript ํ›‘์–ด๋ณด๊ธฐ (6)

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

ReScript ๊ณต์‹๋ฌธ์„œ๋กœ ReScript ํ›‘์–ด๋ณด๊ธฐ (5)

๋ณธ ํฌ์ŠคํŠธ๋Š” ReScript ๊ณต์‹๋ฌธ์„œ๋ฅผ ์Šคํ„ฐ๋””ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Tuple Tuple์€ JavaScript์—๋Š” ์—†๋Š” ReScrpt ์ „์šฉ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋‹ค. Tuple์€ ์•„๋ž˜์™€ ๊ฐ™์€ ํŠน์„ฑ์ด ์กด์žฌํ•œ๋‹ค. ๋ถˆ๋ณ€ํ•จ (Immutable) ์ˆœ์„œ๊ฐ€ ์กด์žฌํ•จ (Ordered) ์ƒ์„ฑ๋  ๋•Œ ๊ณ ์ •๋œ ํฌ๊ธฐ๋ฅผ ๊ฐ–์Œโ€ฆ

ReScript ๊ณต์‹๋ฌธ์„œ๋กœ ReScript ํ›‘์–ด๋ณด๊ธฐ (4)

๋ณธ ํฌ์ŠคํŠธ๋Š” ReScript ๊ณต์‹๋ฌธ์„œ๋ฅผ ์Šคํ„ฐ๋””ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ReScript์˜ Primitive Type ReScript๋Š” string, int, float๊ณผ ๊ฐ™์€ ์นœ์ˆ™ํ•œ ์›์‹œ ํƒ€์ž…์„ ์ œ๊ณตํ•œ๋‹ค. ReScript์˜ ์›์‹œ ํƒ€์ž…์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. String Char Regular Expโ€ฆ

ReScript ๊ณต์‹๋ฌธ์„œ๋กœ ReScript ํ›‘์–ด๋ณด๊ธฐ (3)

๋ณธ ํฌ์ŠคํŠธ๋Š” ReScript ๊ณต์‹๋ฌธ์„œ๋ฅผ ์Šคํ„ฐ๋””ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ReScript์˜ Type ReScript์˜ ํƒ€์ž… ์‹œ์Šคํ…œ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ์žฅ์ ์ด ์กด์žฌํ•œ๋‹ค. ๊ฐ•ํ•˜๋‹ค (Strong) ReScript์—์„œ ํ•˜๋‚˜์˜ ํƒ€์ž…์€ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†๋‹ค. JavaScript์—์„œ๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” โ€ฆ

ReScript ๊ณต์‹๋ฌธ์„œ๋กœ ReScript ํ›‘์–ด๋ณด๊ธฐ (2)

๋ณธ ํฌ์ŠคํŠธ๋Š” ReScript ๊ณต์‹๋ฌธ์„œ๋ฅผ ์Šคํ„ฐ๋””ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Let Binding ReScript์—์„œ์˜ Let Binding์€ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ’์„ ์ด๋ฆ„์— ๋ฐ”์ธ๋”ฉํ•œ๋‹ค. Block Scope ReScript์—์„œ๋Š” ๋ฅผ โ€ฆ

ReScript ๊ณต์‹๋ฌธ์„œ๋กœ ReScript ํ›‘์–ด๋ณด๊ธฐ (1)

๋ณธ ํฌ์ŠคํŠธ๋Š” ReScript ๊ณต์‹๋ฌธ์„œ๋ฅผ ์Šคํ„ฐ๋””ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ ์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ReScript๋ž€? ReScript์˜ ๊ณต์‹๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ReScript๋Š” JavaScript๋ฅผ ์‚ฌ๋ž‘ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ค‘์š”์„ฑ์„ ์ธ์ •ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ์–ธ์–ด๋ผ๊ณ  ํ•œ๋‹ค. ReScript๋Š” JavaScript์ฒ˜๋Ÿผ ๋ณด์ดโ€ฆ