enum์ ์์ฌ์ฉํ๋๊ฐ? ํน์ ํ ๋๋ฒ ํน์ ์คํธ๋ง์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์๋์ ๊ฐ์ ์์๊ฐ ๊ทธ์ ํด๋นํ๋ค. ๊ทธ๋ฐ๋ฐ ์์ฒ๋ผ or ์ฐ์ฐ์๋ก ํ์ ์ ์ ์ํด ๋ฒ๋ฆฌ๋ฉด ์ถ์ฝํ์ผ๋ก ์ด ja, ko, en์ด ๋ฌด์์ ์๋ฏธํ๋์ง ๊น๋จน๊ฑฐ๋ ๋ชจ๋ฅผ ๋๊ฐ ์๋ค. ug๊ฐ ์ด๋ค ๊ตญ๊ฐ๋ฅผ ์๋ฏธํ๋์ง ์๋ ์ฌ๋์ด ์์๊น? ๋ณ๋ก ์์ ๊ฒ์ด๋ผ ์ง์ํ๋ค. ug๋ Uganda ์ฐ๊ฐ๋ค ์ฝ๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์๊น? ์ฝ์ด๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ ํ๋ค์ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ enum ๋ง์น ๊ฐ์ฒด์ key๊ฐ ko ๊ฐ์ด korean์ ๋๋์ด ๋ ๋ค. ์ค์ ๋ก ์ด๋ฌํ ์๋ฆฌ์ด๋ฉฐ, ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋๋ก freezon ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค. ์๊ฒฐ๋ก ์๋ ๋ป์ ์ ์งํ๋ฉฐ, ์งง์ ์ฝ๋๋ก ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ์ถ์ ๊ฒฝ์ฐ enum์ ์ฌ์ฉํด๋ณด์.
๋ฐฐ์ด ๋ด์ฉ ์ ๋ฆฌํ๊ธฐ typescript 1. class์์ ์ ์ธํ private(ํด๋์ค ์ธ๋ถ์์ ์ ๋ ์ ๊ทผ ๋ถ๊ฐ), protected(private์ ๋์ผํ๋ฉฐ + ํ์ฅ๋ ํด๋์ค๊น์ง ์ ๊ทผ ๊ฐ๋ฅ) ๋ฉค๋ฒ๊ฐ ์๋ค๋ฉด, ๊ตฌ์กฐ๊ฐ ๋์ผํ๋๋ผ๋ ๋ฐ๋์ ๋์ผํ ํด๋์ค๋ฅผ ํตํด ์ ์๋ ๋ฉค๋ฒ์ฌ์ผ ๊ฐ์ ํ์ ์ผ๋ก ์ธ์ ๋๋ค. (์ผ๋ฐ์ ์ผ๋ก ts๋ ๊ตฌ์กฐ์ ์ผ๋ก ๋์ผํ ๊ฒฝ์ฐ ๊ฐ์ ํ์ ์ผ๋ก ์ธ์ ) ์์ 1 2. strictNullChecks ์ต์ ์ค์ ์ ํน์ ํ์ ์ผ๋ก ์ง์ ๋ ๋ณ์์ null๊ณผ undefined๊ฐ ํ ๋น๋์ง ๋ชปํ๋๋ก ๋ง๋๋ค. ์์ 1 ์ ์ฝ๋์๋ ์ค๋ฅ๊ฐ ์์ต๋๋ค. loggedInUsername ์๋ณ์๋ constํค์๋์ ํจ๊ป string ํ์ ์ผ๋ก annotation ๋์ต๋๋ค. const๋ฅผ ์ ์ํ ๋๋ ๋ฐ๋์ ์ด๊ธฐํ๊ฐ ํ์ํ๋ค๋ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ํ์ง๋ง declare ํค์๋๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ ํด๋น ๋ณ์๊ฐ ์กด์ฌํ๋ค๊ณ ์ธ์๋์ด ์
๋ฆฌํฉํฐ๋ฆฌ 2ํ ์ค ๋ํ์ดํ์ด๋ผ๋ ์ฉ์ด๊ฐ ๋ฑ์ฅํ๋ค. ํด๋น ์ฉ์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๊ณ ์๋๋ฐ, ๋ช ํํ๊ฒ ์๋ฟ์ง ์๋๋ค. duck typing: ์๋ฐ์ ํ์ ์์คํ ์ '์ด๋ฆ'์ ๊ธฐ๋ฐ์ผ๋ก ํ์ ์ ๊ตฌ๋ถํ๋ค. ํด๋์ค A์ B๊ฐ ๋๊ฐ์ ํ๋์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋๋ผ๋ ํด๋์ค ์ด๋ฆ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํด๋์ค๋ก ์ทจ๊ธํ๋ค. ๋ฐ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ '๊ตฌ์กฐ'๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ ์ ๊ตฌ๋ถํ๋ค. ์ฆ, ํด๋์ค ์ด๋ฆ์ ์๊ด์์ด ์ด๋ค ํ์ ์ ๊ฑธ๋ง์ ํ๋์ ๋ฉ์๋๋ฅผ ์ง๋ ๊ฐ์ฒด๋ผ๋ฉด ํด๋น ํ์ ์ผ๋ก ๊ฐ์ฃผํ๋ค. ๋ ํ์ดํ์ด๋ ์ด๋ฆ์ "๋ง์ฝ ์ด๋ค ์๊ฐ ์ค๋ฆฌ์ฒ๋ผ ๊ฑท๊ณ , ํค์์น๊ณ , ๊ฝฅ๊ฝฅ๊ฑฐ๋ฆฐ๋ค๋ฉด ๋๋ ๊ทธ ์๋ฅผ์ค๋ฆฌ๋ผ๊ณ ๋ถ๋ฅผ ๊ฒ์ด๋ค."๋ผ๋ ๋น์ ์์ ๋์๋ค. > ์์ฝ: ๊ฐ์ฒด์ ๋ณ์ ๋ฐ ๋ฉ์๋์ ์งํฉ์ด ๊ฐ์ฒด์ ํ์ ์ ๊ฒฐ์ ๊ทธ๋์ ์๋ฃ๋ฅผ ์ฐพ์ ์์ ๋ด์ฉ์ ์ฝ๋๋ก ํ์ดํด ๋ดค๋ค. ์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด Qauckable์ ์์๋ฐ์ง ์์ Pig ํด๋์ค๊ฐ cryQuack์ด๋ผ๋ ํจ์์ ์ธ์: Quackable ๋ก ์ ๋ ฅ๋์๋๋ผ๋ ์คํ์ด ๋
typescript๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋ฉด DOM๊ณผ ๊ด๋ จ๋๋ฉฐ, ์ด๋ฏธ ์ ์๋์ด ์๋ interface๋ฅผ ์ฌ์ฉํ ๋๊ฐ ์๋ค. ์๋ฅผ ๋ค์ด ChildNode, HTMLElement๊ฐ ํด๋นํ๋ค. ๊ทธ๋ฐ๋ฐ ์ ๋ง ํท๊ฐ๋ฆฐ๋ค. ChildNode, HTMLElement ๋ญ๊ฐ ๋ค๋ฅธ๊ฑฐ์ง? ๊ทธ๋์ ์กฐ์ฌํด๋ณด์๋ค. 1. DOM Node, DOMElement ์ฐจ์ด 1.1 DOM Node NODE์ ์๋ฏธ๋ ๋ถ๋ชจ ์์์ ๊ด๊ณ์ ์๋ค. ์๋ html document ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ๋ถ๋ชจ ์์ ํ์ ๊ด๊ณ์ ๋ฐ๋ผ ํํ๋๊ณ ์๋ค. html์ head, body ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด๋ฌํ ํ๊ทธํ node(html element) ๋ฟ๋ง์๋๋ผ text node๋ node ์ด๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ ํ์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ฐ๋ผ์ text node๋ before, after, parentElement ๋ฑ์ ๊ด๊ณ๋ node๋ฅผ ์ฐพ๊ธฐ ์ํ ๋ฉ์๋๋ฅผ ํฌํจํ๊ณ ์๋ค. 1.1.1 Node Types ๋ ธ๋๋ ํ์ ์ ๊ฐ์ง
Mapped type mapped type์ ๊ฐ์ฒด์ ๋ํ type์ ์ง์ ํ ๋, property key ํน์ value๋ฅผ ์กฐ๊ธ ๋ ์ ์ฐํ๊ฒ ์ง์ ํ๋๋ก ๋์์ค๋ค. ์ ์ฐํ๋ค๋ ์๋ฏธ๋, ๋ง์น Js์ computed property names ๋ฌธ๋ฒ ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค๋ ์๋ฏธ์ด๋ค. ์ด๋ฅผ ์ ํ์ฉํ๋ฉด typescript์์ ์ ๊ณตํ๋ type utils๋ฅผ ๋์ด์ ๋๋ง์ utils๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๋, ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. js compomputed property names ์์ Mappted type ์์ฉ ๊ฐ์ฒด์ key๋ ๋ชจ๋ฅด์ง๋ง type์ ์๊ณ ์๋ ๊ฒฝ์ฐ, ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์๋ค. ์ด ๋ฌธ๋ฒ์ interface์๋ ์ ์ฉ๊ฐ๋ฅํ๋ค. PropertyKes(๋ณดํต keyof ๋ก ์ถ์ถํ key๋ค)์ ํตํด type์ key๋ฅผ ์ง์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ. key Remapping vis as ๋ณธ์ธ์ด Mappted type์ ์์๋ณด๊ฒ๋ ๊ณ๊ธฐ๋ค.