๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (44) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [TypeScript] Class vs Interface vs Type ์ฐจ์ด์ ์ ๋ฆฌ JavaScript Class vs TypeScript Class 1. ์์ฑ ์ด๊ธฐํ ์ฝ๋๋ฅผ ์๋ตํ ์ ์๋ค.TS Class๋ ์์ฑ์์ ๋งค๊ฐ๋ณ์ ํ์ ์ ์ธ๊ณผ ๋์์ ์ ๊ทผ ์ ์ด์(+readonly)๋ง ์ฌ์ฉํ๋ฉด ์์ฑ ์ด๊ธฐํ๋ฅผ ํ ์ ์๋ค.์ด๋๋ ์์ฑ์ด public์ด์ด๋ ๋ช ์ํด์ผ ํ๋ค.// JSclass User { constructor(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; }}// TS// ์ปดํ์ผํ๋ฉด ์ JS ์ฝ๋์ ๋์ผํ๋คclass User { constructor(private firstName: string, private lastName: string) {}} 2. ์ ๊ทผ ์ ํ์(acces.. [TypeScript] Declaration File & JSDoc Declaration FileTypeScript ์ ์ธ ํ์ผ์ ์ฃผ๋ก JavaScript๋ก ์์ฑ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋์ TypeScript์์ ์ฌ์ฉํ ๋ ํ์ํฉ๋๋ค.์ ์ธ ํ์ผ์ .d.ts ํ์ฅ์๋ฅผ ๊ฐ์ง๋ฉฐ ๋์ผํ ์ด๋ฆ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋์ ํ์ ์ ์ ์ํฉ๋๋ค. Visual Studio Code์ ๊ฐ์ ํตํฉ๊ฐ๋ฐํ๊ฒฝ(IDE)์์๋ ์ ์ธ ํ์ผ์ ๋ถ๋ฌ์์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ํ์ ์ ํ์ธํ ์ ์์ต๋๋ค.TypeScript๋ JavaScript ์ฝ๋๋ ๊ฐ์ด ์ธ ์ ์๋๋ก ํ์ฉํ์ง๋ง, ํ์ ์ ์๊ฐ ์๋ค๋ฉด ์ฌ์ค TypeScript๋ฅผ ์ฐ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ TypeScript์์ ์ ์ธ ํ์ผ์ ๊ผญ ํ์ํฉ๋๋ค.tsconfig.json์ "strict": true ๋ฅผ ์ค์ ํ๋ฉด ์ ์ธ ํ์ผ์ด ์๋ JavaScript ํจํค์ง์ ๋.. [TypeScript] TypeScript ํ์ ์ ๋ฆฌ Object๋ณ์๋ช : { key1: ํ์ , key2: ํ์ , ... }๋ณ์ ์ ์ธ๋ฌธ์ ํ์ฅํด ์์ ๊ฐ์ ํํ๋ก ํ์ ์ ๋ช ์ํ ์ ์์ต๋๋ค.ํ์ ์ฃผ์(type annotation)์ด๋ผ๊ณ ํฉ๋๋ค.์์const player: { name: string; age: number } = { name: "kim",}; Optional๋ณ์/ํ๋กํผํฐ๋ช ?: ํ์ ๋ฌผ์ํ๋ฅผ ๋ถ์ฌ์ ํน์ ํ๋กํผํฐ๋ ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ต์ ๋๋ก ๋ง๋ค ์ ์์ต๋๋ค.์์// ์ธํฐํ์ด์ค ํ๋กํผํฐ์ ์ ์ฉinterface PaintOptions { shape: Shape; xPos?: number; yPos?: number;}// ๊ฐ์ฒด ํ๋กํผํฐ์ ์ ์ฉconst player: { name: string, age?: number } = { name: 'k.. [TypeScript] TypeScript ์๋์ผ๋ก ์ค์ ํ๊ธฐ ๊ฐ์ํ๋ ์์ํฌ๋ฅผ ์ฐ๋ฉด ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์ค์ ๋ ํ๋ก์ ํธ๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด์ฃผ์ง๋ง, ๊ฐํน ํ์ ์คํฌ๋ฆฝํธ ์ค์ ์ ๊ฑด๋๋ ค์ผ ํ ๋๊ฐ ์์ต๋๋ค.๊ทธ๋๋ฅผ ์ํด ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์๋์ผ๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋กํด๋๊ธฐ๋ก ํ์ต๋๋ค.NodeJS๊ฐ ์ค์น๋์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์๋ ์ค์ ๋ฐฉ๋ฒ1. package.json ์์ฑnpm init -y 2. ํ์ ์คํฌ๋ฆฝํธ ์ค์นnpm install -D typescript 3. tsconfig.json ์์ฑtsc -init 4. tsconfig.json ์์ฑ{ "include": ["src"], // ์ปดํ์ผ ํ ํ์ผ์ ๊ฒฝ๋ก "compilerOptions": { "outDir": "build", // ์ปดํ์ผ ํ ํ์ผ์ ์ ์ฅํ ์์น "target": "ES6", // ์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ค ๋ฒ.. [๋คํธ์ํฌ] HTTP Methods ์ฐจ์ด์ ์ ๋ฆฌ HTTP ๋ฉ์๋HTTP ํ๋กํ ์ฝ์์ ์ฌ์ฉ๋๋ ์์ฒญ ๋ฉ์๋๋ก, ์์์ ๋ํด ์๋ฒ๊ฐ ์ํํ ๋์์ ์ง์ ํฉ๋๋ค.์ด 9๊ฐ์ง๊ฐ ์์ผ๋ฉฐ REST API๋ฅผ ์ค๊ณํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ฉ์๋๋ 5๊ฐ์ง์ ๋๋ค. ์ฃผ์ ๋ฉ์๋ 5๊ฐ์งGET : ์๋ฒ๋ก๋ถํฐ ์์์ ์์ฒญํ๋ ๋์POST : ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ฌ ์์์ ์์ฑํ๊ฑฐ๋ ์ ๋ฐ์ดํธ ํ๋ ๋์PUT : ์๋ฒ์ ์์์ ์์ฑํ๊ฑฐ๋ ๊ธฐ์กด ์์์ ๋์ฒดํ๋ ๋์PATCH : ์๋ฒ ์์์ ์ผ๋ถ๋ง ์์ ํ๋ ๋์DELETE : ์๋ฒ์์ ์์์ ์ญ์ ํ๋ ๋์ GET vs POST1. GET๋ชฉ์ ์๋ฒ๋ก๋ถํฐ ์์์ ์์ฒญํ๋ ๋์๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์์์ฒญ ๋ณธ๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ , ์์ฒญ URI์ Path Variable ์ด๋ Query String ์ ์ฌ์ฉํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.๋ณด์๋ฐ์ดํฐ๊ฐ URL์ ํฌํจ๋๋ฏ๋ก.. [TypeORM] TypeORM์์ ํธ๋์ญ์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ TypeORM 0.3 ์ด์ ๋ฒ์ ์ ๊ธฐ์ค์ผ๋ก ํธ๋์ญ์ ์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ์ต๋๋ค. Transactionํธ๋์ญ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ๊บผ๋ฒ์ ์ํ๋์ด์ผ ํ๋ ์์ ๋จ์๋ฅผ ๋งํฉ๋๋ค.ํธ๋์ญ์ ์ ์ค์ํ ํน์ง ์ค ํ๋๋ ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋ฐ์๋๋ ์ง, ์๋๋ฉด ์ ํ ๋ฐ์๋์ง ์์์ผ ํ๋ฉฐ ์์ ์ด ๋ถ๋ถ์ ์ผ๋ก ์คํ๋๊ฑฐ๋ ์ค๋จ๋์ง ์๋ ๊ฒ์ ๋ณด์ฅํ๋ ๊ฒ์ ๋๋ค. (ACID ์ค Atomicity, ์์์ฑ) DataSource & EntityManager / QueryRunnerTypeORM์์๋ DataSource & EntityManager ๋๋ QueryRunner๋ฅผ ํตํด ํธ๋์ญ์ ์ ์์ฑํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ธฐ์ ์์, TypeORM์์์ DataSource, EntityManager, .. [TypeScript] TypeScript ์ฅ์ ๊ณผ ํน์ง TypeScript๋?Microsoft์์ ๊ฐ๋ฐํ ์คํ ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค.JavaScript์ ํ์ฅ์ผ๋ก, JavaScript์ ๋ชจ๋ ๊ธฐ๋ฅ์ ํฌํจํ๋ฉด์๋ ์ ์ ํ์ ์ ์ง์ํ๊ณ ์์ต๋๋ค. ์ TypeScript๋ฅผ ์ฐ๋๊ฐ?1. ํ์ ์์ ์ฑํ์ ์์ ์ฑ(Type Safety)์ ๋ณ์๋ ํจ์ ๋ฑ์ด ์ ์๋ ํ์ ๊ณผ ์ผ์นํ๋์ง ์ฌ๋ถ๋ฅผ ๋ณด์ฅํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.ํ์ ์์ ์ฑ์ ํตํด ์ป๋ ๊ฒ์ปดํ์ผ ํ์ ํ์ ์ฒดํฌ : ์ปดํ์ผ ๊ณผ์ ์์ ํ์ ์๋ฌ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๊ฒฝ๊ณ ๋ ์ค๋ฅ๋ฅผ ํตํด ๊ฐ๋ฐ์์๊ฒ ์๋ ค์ค๋๋ค.๊ฐ๋ ฅํ ํ์ ์์คํ : ํ์ ์ด ๋ช ํํ๊ฒ ์ง์ ๋์ด์ผ ํ๊ณ , ํ์ ์ ๋ํ ์๊ฒฉํ ๊ท์น์ ๊ฐ์ง๋๋ค.ํ์ ์ถ๋ก : ํ์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์์๋ ์ปดํ์ผ๋ฌ๊ฐ ํ์ ์ ์ถ๋ก ํด์ค๋๋ค.ํ์ ์์ ์ฑ ๋๋ถ์ ๋ฒ๊ทธ์ ๋ฐํ์ ์๋ฌ๋ฅผ ์ค์ผ ์ ์๊ณ .. REST ์์น๊ณผ REST API ์ค๊ณ ๋ฐฉ๋ฒ "๊ทธ๋ฐ REST API๋ก ๊ด์ฐฎ์๊ฐ"๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. REST๋?REpresentational State Transfer์ ์ฝ์์ ๋๋ค.์น ์๋น์ค ์ํคํ ์ฒ์ ์คํ์ผ ์ค ํ๋๋ก, ๋คํธ์ํฌ๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์ํธ์์ฉํ๋ ๋ฐฉ์์ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.์ธํฐ๋ท์์ ์ด๋ป๊ฒ ์ ๋ณด๋ฅผ ๊ณต์ ํ ๊ฒ์ธ์ง์ ๋ํ ํด๋ต์ผ๋ก 1991๋ ์น(Web)์ด ๋ฑ์ฅํ์ต๋๋ค. ์น์ HTML์ด๋ผ๋ ํ์์ผ๋ก ์ ๋ณด๋ฅผ ํํํ๊ณ , ์ ๋ณด๋ค์ ๋ํ ์๋ณ์๋ก URI๋ฅผ ์ ํํ๊ณ , HTTP๋ผ๋ ํ๋กํ ์ฝ๋ก ์ ๋ณด๋ฅผ ์ ์กํฉ๋๋ค.2000๋ Roy T. Fielding์ ๊ธฐ์กด์ ์น์ ๋ง๊ฐํธ๋ฆฌ์ง ์๊ณ HTTP๋ฅผ ๊ฐ์ ํ ์ ์์์ง์ ๋ํ ๋ ผ๋ฌธ์ ๋ฐํํ๊ณ , ์ด๊ฒ์ด REST ์์ต๋๋ค.REST API๋?REST API๋ REST ์ํคํ ์ฒ๋ฅผ ๋ฐ๋ฅด๋ API๋ก,.. ์ด์ 1 2 3 4 5 6 ๋ค์