๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Language/TypeScript

(6)
[TypeScript] ์ค‘์ฒฉ๋œ ๊ฐ์ฒด์˜ ๊ฐ’์„ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋•Œ ์ค‘์ฒฉ๋œ ๊ฐ์ฒด์—์„œ ๊ฐ’๋งŒ ๋ฝ‘์•„์„œ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ?๐Ÿค”      const ENDPOINTS = { AUTH: { SIGN_UP: 'POST /auth/sign-up', SIGN_IN: 'POST /auth/sign-in' }} ๋งŒ์•ฝ ์ด๋Ÿฐ ํ˜•ํƒœ์˜ ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ด…์‹œ๋‹ค. ์ด ๊ฐ์ฒด์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ENDPOINTS.AUTH.SIGN_UP ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ ์ด๋ ‡๊ฒŒ ์ค‘์ฒฉ๋œ ๊ฐ์ฒด์—์„œ value๋งŒ ๋ชจ์•„์„œ ํ•˜๋‚˜์˜ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ˆ˜๋™์œผ๋กœ type Endpoint = 'POST /auth/sign-up' | 'POST /auth/sign-in' | ... ๋กœ ์„ ์–ธํ•  ์ˆ˜๋„ ์žˆ๊ฒ ์ง€๋งŒ, ์ด ๊ฐ์ฒด์˜ ๋ชธ์ง‘์ด ํ›จ์”ฌ ๋” ํฌ๋‹ค๊ณ  ํ•  ๋•Œ๋Š” ๊ฝค๋‚˜ ๊ท€์ฐฎ๊ณ  ๋”๋Ÿฌ์šด ์ฝ”๋“œ๊ฐ€ ๋  ..
[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", // ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ด๋–ค ๋ฒ„..
[TypeScript] TypeScript ์žฅ์ ๊ณผ ํŠน์ง• TypeScript๋ž€?Microsoft์—์„œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.JavaScript์˜ ํ™•์žฅ์œผ๋กœ, JavaScript์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋ฉด์„œ๋„ ์ •์  ํƒ€์ž…์„ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ TypeScript๋ฅผ ์“ฐ๋Š”๊ฐ€?1. ํƒ€์ž… ์•ˆ์ •์„ฑํƒ€์ž… ์•ˆ์ •์„ฑ(Type Safety)์€ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ๋“ฑ์ด ์ •์˜๋œ ํƒ€์ž…๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.ํƒ€์ž„ ์•ˆ์ •์„ฑ์„ ํ†ตํ•ด ์–ป๋Š” ๊ฒƒ์ปดํŒŒ์ผ ํƒ€์ž„ ํƒ€์ž… ์ฒดํฌ : ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ํƒ€์ž… ์—๋Ÿฌ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๊ฒฝ๊ณ ๋‚˜ ์˜ค๋ฅ˜๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.๊ฐ•๋ ฅํ•œ ํƒ€์ž… ์‹œ์Šคํ…œ : ํƒ€์ž…์ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ง€์ •๋˜์–ด์•ผ ํ•˜๊ณ , ํƒ€์ž…์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ ๊ทœ์น™์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.ํƒ€์ž… ์ถ”๋ก  : ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํƒ€์ž…์„ ์ถ”๋ก ํ•ด์ค๋‹ˆ๋‹ค.ํƒ€์ž… ์•ˆ์ •์„ฑ ๋•๋ถ„์— ๋ฒ„๊ทธ์™€ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ ..