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

์ „์ฒด ๊ธ€

(112)
250611 ๊ณผ์ œ - HTTP ์ƒํƒœ ์ฝ”๋“œ HTTP ์ƒํƒœ์ฝ”๋“œ HTTP ์„ค๋ช… : https://hydeveloper.tistory.com/215 Node.js / ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ๋„คํŠธ์›Œํฌ์˜ ์ข…๋ฅ˜ ๋„คํŠธ์›Œํฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐ˜๊ฒฝ, ์†๋„์— ๋”ฐ๋ผ LAN, MAN, WAN์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. LAN(Local Area Network)MAN (Metropolitan Area Network)WAN(Wide Area Network)๋ฒ”์œ„์ข์Œ(์ฃผ๋กœ ์ง‘, ์‚ฌ๋ฌด์‹ค, ๊ฑด๋ฌผ, ์บ ํผhydeveloper.tistory.com ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€ ๋‚ด์˜ ์ƒํƒœ ์ฝ”๋“œ(status code)๋Š” ํ˜„์žฌ 100~500๋ฒˆ๋Œ€๊นŒ์ง€ ์ •์˜๋˜์–ด์žˆ๋‹ค. 1XX : Information(์ •๋ณด ์ œ๊ณต)์ž„์‹œ ์‘๋‹ต์œผ๋กœ, ์ง€๊ธˆ๊นŒ์ง€์˜ ์ƒํƒœ๋Š” ๊ดœ์ฐฎ๋‹ค๋Š” ์˜๋ฏธ 2XX : Success(์„ฑ๊ณต)ํด๋ผ..
TypeScript / Webpack ๋ฒˆ๋“ค๋Ÿฌ์›น์•ฑ์„ ๊ตฌ์„ฑํ•˜๋Š” asset(์Šคํฌ๋ฆฝํŠธ, ์Šคํƒ€์ผ์‹œํŠธ, ์ด๋ฏธ์ง€ ๋“ฑ)์„ ๋ชจ๋‘ ๋ฌถ์–ด ์ตœ์ ํ™”๋œ ์—ฌ๋Ÿฌ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋„๊ตฌ๋กœ,์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•ด์ฃผ๋ฉฐ, ์˜์กด์„ฑ ๊ด€๋ฆฌ์— ์œ ์šฉํ•˜๊ณ , ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ์ž‘์—…์„ ๊ฐ„์†Œํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŽธ์˜์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Webpackํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ฐ€์ด๋“œ : https://webpack.kr/guides/typescript/JS ์•ฑ์„ ์œ„ํ•œ ์ •์  ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์—ฌ๋Ÿฌ ํŒŒ์ผ(js, css, html, ์ด๋ฏธ์ง€) ๋“ฑ์„ ๋ฒˆ๋“คํ•ด ํ•˜๋‚˜ ํ˜น์€ ์—ฌ๋Ÿฌ ํŒŒ์ผ๋กœ ๋ฌถ์–ด์ฃผ๋Š” ๋„๊ตฌ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋ง / ๋กœ๋” / ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง€์›ํ•จ ์‹ค์Šต tsconfig.json{ "compilerOptions": { "target": "es6", "module": "es6", "esModuleInterop": true, "..
TypeScript / ํƒ€์ž… ์„ ์–ธ ํŒŒ์ผ Type declaration file์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‚ด์žฅ ๊ฐ์ฒด, ๋˜๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, API ๋“ฑ์„ ์„ค๋ช…ํ•˜๋Š” ํŒŒ์ผ๋กœ, .d.ts ์˜ ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„๋‹ค.์‹ค์ œ ๊ตฌํ˜„์€ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฉฐ. ํŠน์ • ํƒ€์ž…์ด ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์„ ์–ธํ•œ๋‹ค. console.log()์—์„œ console์— ๋Œ€๊ณ  โŒ˜ ํ‚ค๋ฅผ ๋ˆ„๋ฅธ์ฑ„๋กœ ํด๋ฆญํ•ด๋ณด๋ฉด ์šฐ์ธก์ฒ˜๋Ÿผ lib.dom.d.ts ํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ผ์„ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ .ts ํŒŒ์ผ์—๋Š” ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•œ ๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๋ฉด, .d.ts ํŒŒ์ผ์—๋Š” ํƒ€์ž… ์ •๋ณด๋งŒ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. .d.ts ํŒŒ์ผ์€ ํƒ€์ž… ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  js ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์˜ˆ์‹œ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์—ญํ• ๋„ ํ•œ๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ ์ž„์˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค.npm install lodash @type..
TypeScript / ์ œ๋„ค๋ฆญ Generics(์ œ๋„ค๋ฆญ)ํ•จ์ˆ˜, ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ ํƒ€์ž…์„ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์šฉ์ ์ธ ํŒจํ„ด์„ ์ œ๊ณตํ•ด ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ํ•จ์ˆ˜, ํด๋ž˜์Šค ๋“ฑ์„ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์žฅ์  : ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ • ์œ ์—ฐ์„ฑ • ํ™•์žฅ์„ฑ ์ฆ๊ฐ€ (๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํˆด ๊ฐœ๋ฐœ ์‹œ ๋”์šฑ ์œ ์šฉ) , ๋ช…์‹œ์ ์ธ ํƒ€์ž… ํ‘œํ˜„๋‹จ์  : ๋Ÿฌ๋‹ ์ปค๋ธŒ(์ดˆ๋ณด์ž์—๊ฒ ์–ด๋ ค์›€) , ๋ณต์žก์„ฑ • ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ์ฆ๊ฐ€function genericFunction(arg:T):T{ return arg;}interface GenericInterface {}class GenericClass {} ํƒ€์ž… ๋ณ€์ˆ˜(Type Variable)ํƒ€์ž… ์ž๋ฆฌ์— ๋Œ€์ฒด๋  ํƒ€์ž…์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜์‹ค์ œ ์‚ฌ์šฉ์‹œ์—๋Š” ๊ตฌ์ฒด์ ์ธ ํƒ€์ž…์œผ๋กœ ๋Œ€์ฒด๋จfuncti..
TypeScript / ํด๋ž˜์Šค Classes (ํด๋ž˜์Šค)๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ•˜๋‚˜์˜ ํ…œํ”Œ๋ฆฟ ์—ญํ• ๋กœ, ES6์—์„œ ๋„์ž…๋œ ํด๋ž˜์Šค ๋ฌธ๋ฒ•์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค.์ƒ์„ฑ์ž, ์†์„ฑ, ๋ฉ”์„œ๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. // ํด๋ž˜์Šค ์ •์˜class Continent { continentName: string; constructor(name: string) { this.continentName = name; } getContinentName() { return this.continentName; }}class Country extends Continent { name: string; capital: string; constructor(continentName: string, name: string, cap..
TypeScript / ํƒ€์ž… ์ถ”๋ก , ํƒ€์ž… ๋‹จ์–ธ Type Inference(ํƒ€์ž…์ถ”๋ก )์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ๋ณ€์ˆ˜, ํ‘œํ˜„์‹ ๋“ฑ์˜ ํƒ€์ž…์„ ๊ฒฐ์ •ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋กœ,๋ช…์‹œ์ ์ธ ํƒ€์ž… ์ง€์ •์ด ์—†๋”๋ผ๋„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฝ”๋“œ์˜ ๋ฌธ๋งฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ ์ ˆํ•œ ํƒ€์ž…์„ ์ถ”๋ก ํ•œ๋‹ค. ๋ณ€์ˆ˜ ์ถ”๋ก let myNumber = 5;let myString = "Hello";let myBool = true;myNumber = 23;// myNumber = "14" // ์˜ค๋ฅ˜ ๋ฐœ์ƒ ํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ๊ฐ’ ์ถ”๋ก function add(x:number, y:number) { // ์ธ์ž ๋’ค :number๋ฅผ ์ƒ๋žตํ•ด๋„ ๋ฌธ์ œ ์—†์Œ return x+y; // return `${x}${y}` // ์ด ๊ฒฝ์šฐ์—๋Š” const n์ด string์œผ๋กœ ์ถ”๋ก }const n = add(10,5) ๋ฐฐ์—ด&๊ฐ์ฒด ์ถ”๋ก let nums = ..
TypeScript / ํƒ€์ž…(2) Interface๊ฐ์ฒด์˜ ๊ตฌ์กฐ/ํ˜•ํƒœ๋ฅผ ์ •์˜ํ•˜๋ฉฐ, ํŠน์ • ๊ฐ์ฒด๊ฐ€ ์–ด๋–ค Property, Method๋ฅผ ๊ฐ€์ ธ์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์•ˆ์ „์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ™•์žฅ ๋ฐ ์กฐํ•ฉ๋„ ์šฉ์ดํ•˜๋‹ค.interface ์ด๋ฆ„ { ์†์„ฑ ์ด๋ฆ„: ์†์„ฑ ํƒ€์ž…; ์†์„ฑ ์ด๋ฆ„: ์†์„ฑ ํƒ€์ž…; ๋ฉ”์„œ๋“œ ์ด๋ฆ„(): ๋ฉ”์„œ๋“œ ํƒ€์ž…;} ์˜ˆ์‹œinterface User { id: number; name: string; isPremium: boolean; someMethod(): void;}const userA: User = { id: 10, name: "Bill", isPremium: false, someMethod() { console.log("some method called")..
TypeScript / ํƒ€์ž… (1) ๋ฐฐ์—ด๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ๋™์ผํ•œ ํƒ€์ž…์„ ๊ฐ–๋„๋ก ๋ช…์‹œ=> ๋ฐฐ์—ด ๋‚ด๋ถ€ ์š”์†Œ์˜ ํƒ€์ž… ์•ˆ์ •์„ฑ ์ œ๊ณต ํ‘œํ˜„ ๋ฐฉ์‹ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜ : type[] (์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํ‘œํ˜„)์ œ๋„ˆ๋ฆญ ํƒ€์ž… ์‚ฌ์šฉ : Array// ๋ฐฐ์—ด ํƒ€์ž… ๋ฐฉ๋ฒ• 1 : type[]let nums: number[] = [1, 2, 3, 4, 5];let strs: string[] = ['a', 'b', 'c'];let bools: boolean[] = [false, false, true];nums.push(6);nums.push(7);bools.push(true)// ๋ฌธ์ž์—ด ํƒ€์ž…์„ ์ˆซ์ž ํƒ€์ž…์— ํ• ๋‹นํ•  ์ˆ˜ ์—†์Œ// nums.push('8');// num[0] = '1';// bools.push(1)// ๋ฐฐ์—ด ํƒ€์ž… ๋ฐฉ๋ฒ• 2 : Arraylet nums1: Array ..