

6๊ฑด์ ํญ๋ชฉ
Interface ์ ์ TypeScript์์ Object(๊ฐ์ฒด)์ ํ์ ์ ์ง์ ํ ๋ ์ฌ์ฉํจ ์ํธ๊ฐ์ ์ ์ํ ์ฝ์ ํน์ ๊ท์น์ ์๋ฏธ Object ์ ์ ๋ฒ์ฃผ ๊ฐ์ฒด์ ์คํ(์์ฑ๊ณผ ์์ฑ์ ํ์ ) ํจ์์ ํ๋ผ๋ฏธํฐ ํจ์์ ์คํ(ํ๋ผ๋ฏธํฐ, ๋ฐํ ํ์ ๋ฑ) ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด๋ฅผ ์ ๊ทผํ๋ ๋ฐฉ์ ํด๋์ค ์์ ์ธํฐํ์ด์ค interface IProfile { name: ...
Decorator ์ ์ TypeScript์์ ์คํ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ธฐ๋ฅ ๊ตฌ์กฐ๋ฅผ ์์ ํ์ง ์๊ณ ๊ธฐ์กด ๊ฐ์ฒด์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋๋ก ํ๋ ๋์์ธ ํจํด tsconfig.json compilerOptions์ "experimentalDecorators": true๋ฅผ ์ถ๊ฐํด์ค์ผ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค ...
์ ๊ทผ ์ ํ์์ ๋ํ ์ ์ ๋ณ์, ๋ฉ์๋๋ช ์์ ์์ฑํ๋ ๊ฒ์ด๋ฉฐ, ์์ ํด๋์ค๋ ์ธ๋ถ ๋ฑ์์ ์ ๊ทผ/์์ ์ ๊ฐ๋ฅ ๋๋ ๋ถ๊ฐ๋ฅํ๋๋ก ์ง์ ํด์ฃผ๋ ๊ธฐ๋ฅ์ ํจ TypeScript์๋ public, private, protected, readonly๊ฐ ์์ต๋๋ค. ์ ๊ทผ ๊ถํ Public ๊ตฌ๋ถ๋ณธ์ธ ํด๋์ค์์ ํด๋์ค์ธ๋ถ์ฝ๊ธฐOOO์์ OOO Private ๊ตฌ๋ถ๋ณธ์ธ ํด๋์ค์์ ํด๋์ค์ธ๋ถ์ฝ๊ธฐOXX์์ OXX Protected ๊ตฌ๋ถ๋ณธ์ธ ํด๋์ค์์ ํด๋์ค์ธ๋ถ์ฝ๊ธฐOOX์์ OOX Readonly ๊ตฌ๋ถ๋ณธ์ธ ํด๋์ค์์ ํด๋์ค์ธ๋ถ์ฝ๊ธฐOOO์์ XXX ์ค๋ณต ์ฌ์ฉ ์ ๊ทผ ์ ํ์๋ฅผ ๋๊ฐ ์ด์ ์ค๋ณตํ์ฌ ์ ์ฉ์ํฌ ์ ์์ต๋๋ค.
ํ์ ์ถ๋ก TypeScript๋ ๋ณ์ ์ ์ธ ์ ๋ฐ๋ก ํ์ ์ ์ง์ ํ์ง ์์ผ๋ฉด ํ์ ์ ์ถ๋ก ํ์ฌ ์ค์ ํ๊ฒ ๋ฉ๋๋ค. ์ด ๋๋ถ์ ์ดํ ๋ค๋ฅธ ํ์ ์ ๋ฃ์ผ๋ฉด ์๋ฌ๋ฅผ ๋ฐ์์์ผ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค. let aaa = '์๋ ํ์ธ์' // aaa์ ํ์ ์ String์ด๋ผ๊ณ ์ถ๋ก ํจ aaa = '๋ฐ๊ฐ์ต๋๋ค' aaa = 3 // ๐จ ๋ค๋ฅธ ํ์ ์ ๋ฃ๊ฒ๋๋ฉด ์๋ฌ ๋ฐ์! ํ์ ๋ช ์ : ๋ค์ ํ์ ๋ช ์ผ๋ก ๋ณ์์ ํ์ ์ ์ง์ ๋ช ์ํ ์ ์์ต๋๋ค.
ํด๋น ์ค์ ๋ฐฉ๋ฒ์ Yarn ํจํค์ง ๋งค๋์ ๋ฅผ ์ฌ์ฉํ์ฌ ์งํํ์์ต๋๋ค. ๋ง์ผ NPM์ ํตํด ๊ธฐ๋ณธ ์ค์ ์ ์ํ์ ๋ค๋ฉด NPM ๊ธ๋ก ์ด๋ํ์ฌ NPM์ ๋ง๊ฒ ๋ช ๋ น์ด๋ฅผ ์นํํ์ฌ ์งํํ์ฌ ์ฃผ์๋ฉด ๋ฉ๋๋ค. ๋ชจ๋ ์ค์น TypeScript์์ jest๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ๊ทธ๋ฅ jest๋ง ์ค์นํ๋ ๊ฒ์ด ์๋ ts-jest ์ @types/jest๋ ์ค์นํด ์ฃผ์ด์ผ ํฉ๋๋ค.
ํด๋น ์ค์ ๋ฐฉ๋ฒ์ Yarn ํจํค์ง ๋งค๋์ ๋ฅผ ์ฌ์ฉํ์ฌ ์งํํ์์ต๋๋ค. ๋ง์ผ NPM์ ํตํด ๊ธฐ๋ณธ ์ค์ ์ ์ํ์ ๋ค๋ฉด NPM ๊ธ๋ก ์ด๋ํ์ฌ NPM์ ๋ง๊ฒ ๋ช ๋ น์ด๋ฅผ ์นํํ์ฌ ์งํํ์ฌ ์ฃผ์๋ฉด ๋ฉ๋๋ค. TypeScript ๋ชจ๋ ์ค์น yarn add --dev @types/node typescript TypeScript ์ค์ ํ์ผ ์์ฑ(tsconfig.json) yarn tsc --init ๋น๋ ํ์ผ ์์ฑ ๊ฒฝ๋ก ์ง์ ์์ฑ๋ tsconfig.jsonํ์ผ์์ ์คํฌ๋กค์ ๋ด๋ฆฌ๋ฉด ์ฌ๋ฌ ์ฃผ์๋ ์ค ์ค outDir์ ์ค์ ํ๋ ์ค์ด ์์ต๋๋ค.