๋ณธ ํฌ์คํธ๋ ReScript ๊ณต์๋ฌธ์๋ฅผ ์คํฐ๋ํ๋ฉฐ ์ ๋ฆฌํ ํฌ์คํธ ์ ๋๋ค. ํฌ์คํธ๋ฅผ ์์ฑํ๋ฉฐ ์์ฑํ ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค. Array and List Array Array๋ ReScript์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ ฌ๋ ์๋ฃ๊ตฌ์กฐ๋ค. JavaScript์ ๋ฐฐ์ด๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ReScript์ ๋ฐฐ์ด์ ๊ฐ ํญ๋ชฉ์ ํ์ ์ด ๋์ผํด์ผ ํ๋ค. Arrโฆ
๋ณธ ํฌ์คํธ๋ ReScript ๊ณต์๋ฌธ์๋ฅผ ์คํฐ๋ํ๋ฉฐ ์ ๋ฆฌํ ํฌ์คํธ ์ ๋๋ค. ํฌ์คํธ๋ฅผ ์์ฑํ๋ฉฐ ์์ฑํ ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค. Null, Undefined and Option ReScriptt์๋ ๋๋ ๊ฐ๋ ์ด ์กด์ฌํ์ง ์๋๋ค. ๋ชจ๋ ์นดํ ๊ณ ๋ฆฌ์ ๋ฒ๊ทธ๋ฅผ ์์ ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ข์ ์ผ์ด๋ค. ๋์ด์ ์ด๋ ๋ฅผ ๋ง์ฃผ์น ์ผ์ด ์๋ค. ๊ทธ๋ฌ๋, ์ ์ฌ์ ์ผ๋ก ์กดโฆ
๋ณธ ํฌ์คํธ๋ ReScript ๊ณต์๋ฌธ์๋ฅผ ์คํฐ๋ํ๋ฉฐ ์ ๋ฆฌํ ํฌ์คํธ ์ ๋๋ค. ํฌ์คํธ๋ฅผ ์์ฑํ๋ฉฐ ์์ฑํ ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค. Variant ์ง๊ธ๊น์ง ์ดํด๋ณธ ๋๋ถ๋ถ์ ReScript์ ์๋ฃ๊ตฌ์กฐ๋ ์ต์ํ ์ ์๋ค. ์ด ์ ์์๋ ๋งค์ฐ ์ค์ํ๋ฉด์๋ ์ต์ํ์ง ์์ ์๋ฃ๊ตฌ์กฐ์ธ Variant๋ฅผ ์๊ฐํ๋ค. ๋๋ถ๋ถ์ ์ธ์ด์์ ๋๋ถ๋ถ์ ์๋ฃ๊ตฌ์กฐ๋ โ์ด๊ฒ and โฆ
๋ณธ ํฌ์คํธ๋ ReScript ๊ณต์๋ฌธ์๋ฅผ ์คํฐ๋ํ๋ฉฐ ์ ๋ฆฌํ ํฌ์คํธ ์ ๋๋ค. ํฌ์คํธ๋ฅผ ์์ฑํ๋ฉฐ ์์ฑํ ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค. Object ReScript์ Objectํ์ ์ Recordํ์ ๊ณผ ๋น์ทํ์ง๋ง ์๋์ ๊ฐ์ ์ฐจ์ด์ ์ด ์๋ค. ํ์ ์ ์ธ์ด ํ์ํ์ง ์๋ค. Recordํ์ ๊ณผ ๋ค๋ฅด๊ฒ ๊ตฌ์กฐ์ ์ด๊ณ ๋คํ์ฑ์ด ๊ฐํ๋ค. ๊ฐ์ฒด๊ฐ JavaScript์ชฝ์์ โฆ
๋ณธ ํฌ์คํธ๋ ReScript ๊ณต์๋ฌธ์๋ฅผ ์คํฐ๋ํ๋ฉฐ ์ ๋ฆฌํ ํฌ์คํธ ์ ๋๋ค. ํฌ์คํธ๋ฅผ ์์ฑํ๋ฉฐ ์์ฑํ ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค. Record Record๋ JavaScript์ ๊ฐ์ฒด์ ๋น์ทํ์ง๋ง ์๋์ ๊ฐ์ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ณํ๋ค. ํ์ฅ ๋ถ๊ฐ๋ฅํ ๊ณ ์ ์ ์ธ ํ๋๋ค์ ๊ฐ๋๋ค. Record์ ํ์ ์ ์ธ Record๋ ํ์์ ์ผ๋ก ํ์ ์ ์ธโฆ
๋ณธ ํฌ์คํธ๋ ReScript ๊ณต์๋ฌธ์๋ฅผ ์คํฐ๋ํ๋ฉฐ ์ ๋ฆฌํ ํฌ์คํธ ์ ๋๋ค. ํฌ์คํธ๋ฅผ ์์ฑํ๋ฉฐ ์์ฑํ ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค. Tuple Tuple์ JavaScript์๋ ์๋ ReScrpt ์ ์ฉ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ค. Tuple์ ์๋์ ๊ฐ์ ํน์ฑ์ด ์กด์ฌํ๋ค. ๋ถ๋ณํจ (Immutable) ์์๊ฐ ์กด์ฌํจ (Ordered) ์์ฑ๋ ๋ ๊ณ ์ ๋ ํฌ๊ธฐ๋ฅผ ๊ฐ์โฆ
๋ณธ ํฌ์คํธ๋ ReScript ๊ณต์๋ฌธ์๋ฅผ ์คํฐ๋ํ๋ฉฐ ์ ๋ฆฌํ ํฌ์คํธ ์ ๋๋ค. ํฌ์คํธ๋ฅผ ์์ฑํ๋ฉฐ ์์ฑํ ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค. ReScript์ Primitive Type ReScript๋ string, int, float๊ณผ ๊ฐ์ ์น์ํ ์์ ํ์ ์ ์ ๊ณตํ๋ค. ReScript์ ์์ ํ์ ์ ์๋์ ๊ฐ๋ค. String Char Regular Expโฆ
๋ณธ ํฌ์คํธ๋ ReScript ๊ณต์๋ฌธ์๋ฅผ ์คํฐ๋ํ๋ฉฐ ์ ๋ฆฌํ ํฌ์คํธ ์ ๋๋ค. ํฌ์คํธ๋ฅผ ์์ฑํ๋ฉฐ ์์ฑํ ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค. ReScript์ Type ReScript์ ํ์ ์์คํ ์ ์๋์ ๊ฐ์ ์ฅ์ ์ด ์กด์ฌํ๋ค. ๊ฐํ๋ค (Strong) ReScript์์ ํ๋์ ํ์ ์ ๋ค๋ฅธ ํ์ ์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์๋ค. JavaScript์์๋ ์ฝ๋๊ฐ ์คํ๋๋ โฆ
๋ณธ ํฌ์คํธ๋ ReScript ๊ณต์๋ฌธ์๋ฅผ ์คํฐ๋ํ๋ฉฐ ์ ๋ฆฌํ ํฌ์คํธ ์ ๋๋ค. ํฌ์คํธ๋ฅผ ์์ฑํ๋ฉฐ ์์ฑํ ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค. Let Binding ReScript์์์ Let Binding์ ๋ค๋ฅธ ์ธ์ด์์์ ๋ณ์ ์ ์ธ์ด๋ผ๊ณ ํ ์ ์๋ค. ์์ ์ฝ๋์ ๊ฐ์ด ํค์๋๋ฅผ ์ฌ์ฉํด ๊ฐ์ ์ด๋ฆ์ ๋ฐ์ธ๋ฉํ๋ค. Block Scope ReScript์์๋ ๋ฅผ โฆ
๋ณธ ํฌ์คํธ๋ ReScript ๊ณต์๋ฌธ์๋ฅผ ์คํฐ๋ํ๋ฉฐ ์ ๋ฆฌํ ํฌ์คํธ ์ ๋๋ค. ํฌ์คํธ๋ฅผ ์์ฑํ๋ฉฐ ์์ฑํ ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค. ReScript๋? ReScript์ ๊ณต์๋ฌธ์์ ๋ฐ๋ฅด๋ฉด ReScript๋ JavaScript๋ฅผ ์ฌ๋ํ์ง๋ ์์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ์ ์ค์์ฑ์ ์ธ์ ํ๋ ์ฌ๋๋ค์ ์ํ ์ธ์ด๋ผ๊ณ ํ๋ค. ReScript๋ JavaScript์ฒ๋ผ ๋ณด์ดโฆ