๐ŸŸฉ Frontend-HTML & CSS & +JS/๐Ÿ”ฐ Node Js

Node.js ๋ฐ TypeScript ๊ธฐ์ดˆ ๊ฐ€์ด๋“œ

ramen2 2024. 10. 30. 17:39
๋ฐ˜์‘ํ˜•

1. Node.js ๊ฐœ์š”

  1. Node.js๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ™˜๊ฒฝ์ด๋‹ค.
  2. Google V8 ์—”์ง„์„ ์‚ฌ์šฉํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•œ๋‹ค.
  3. ์›น ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด(์˜ˆ: Apache, Tomcat)๊ฐ€ ํ•„์š” ์—†์ด ๋‚ด์žฅ ์›น ์„œ๋ฒ„ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
  4. **NPM(Node Package Manager)**์œผ๋กœ ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€์™€ ๋ชจ๋“ˆ์„ ๊ด€๋ฆฌํ•œ๋‹ค.

2. ๋ช…๋ น์–ด ์ •๋ฆฌ

๋„์Šค ๋ช…๋ น์–ด

  • cd / : ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™
  • cd ํด๋”๊ฒฝ๋กœ : ์›ํ•˜๋Š” ํด๋”๋กœ ์ด๋™
  • cd .. : ์ƒ์œ„ ํด๋”๋กœ ์ด๋™
  • md ํด๋”๋ช… : ํด๋” ์ƒ์„ฑ

 

์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด ๋จ!

3. TypeScript ๊ฐœ์š”

  1. 2012๋…„ Anders Hejlsberg๊ฐ€ ์‹œ์ž‘ํ•œ ์˜คํ”ˆ ์†Œ์Šค ์–ธ์–ด.
  2. JavaScript์˜ Superset์œผ๋กœ, JavaScript๋กœ ๋ณ€ํ™˜๋˜์–ด ์‹คํ–‰๋œ๋‹ค.
  3. ๊ฐ•๋ ฅํ•œ ํ˜•์‹ ์ง€์ • ๊ธฐ๋Šฅ๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP)์„ ์ง€์›ํ•œ๋‹ค.
  4. Angular, React, Vue ๊ฐ™์€ SPA ํ”„๋ ˆ์ž„์›Œํฌ์™€์˜ ํ˜ธํ™˜์ด ๋›ฐ์–ด๋‚˜๋‹ค.

TypeScript๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

  • ์ตœ์‹  JavaScript ๊ธฐ๋Šฅ์„ ์ง€๊ธˆ ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
  • ํ˜•์‹ ์•ˆ์ •์„ฑ์„ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์˜ค๋ฅ˜๋ฅผ ์ค„์ž„.
  • ์ฃผ์š” ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด TypeScript๋ฅผ ๊ธฐ๋ณธ ์ฑ„ํƒํ•จ.

4. ์„ค์น˜ ๋ฐฉ๋ฒ• ๋ฐ ์‚ฌ์šฉ๋ฒ•

Node.js ์„ค์น˜

  1. Node.js ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ LTS ๋ฒ„์ „ ๋‹ค์šด๋กœ๋“œ.

  2. ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜์ฒ˜๋Ÿผ '๋‹ค์Œ-๋‹ค์Œ'์„ ํ†ตํ•ด ์„ค์น˜.

  3. ์„ค์น˜ ํ›„, ํ„ฐ๋ฏธ๋„์— ์ž…๋ ฅ:
    node --v # Node.js ๋ฒ„์ „ ํ™•์ธ
    npm --v # NPM ๋ฒ„์ „ ํ™•์ธ
     
  4. NPM ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ, ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ํ•ด๊ฒฐ:
    npm install -g npm # NPM ์žฌ์„ค์น˜

TypeScript ์„ค์น˜

  1. ์ „์—ญ ์„ค์น˜ (cmd ๋“ค์–ด๊ฐ€์„œ ์•„๋ž˜ ๋ช…๋ น์–ด ์ž…๋ ฅ):
     
    npm install -g typescript
     
  2. ๋ฒ„์ „ ํ™•์ธ:
     
    tsc --version
     
  3. ๋„์›€๋ง ํ™•์ธ:
     
    tsc --help
     
  4. ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™”:
     
    tsc --init
     
  5. TypeScript ํŒŒ์ผ ์ปดํŒŒ์ผ:
     
    tsc app.ts # app.ts → app.js๋กœ ๋ณ€ํ™˜
     
  6. ์ž๋™ ์ปดํŒŒ์ผ ๋ชจ๋“œ ํ™œ์„ฑํ™”:
     
    tsc -w # ํŒŒ์ผ ์ €์žฅ ์‹œ ์ž๋™ ์ปดํŒŒ์ผ
    • ์ค‘์ง€: CTRL + C


์ œ๋Œ€๋กœ ์„ค์น˜๋œ ๋ชจ์Šต (cls๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์žก๋‹คํ•œ ๊ธ€๋“ค์ด ์‚ฌ๋ผ์ง)
vscode ์ƒ์˜ ํ„ฐ๋ฏธ๋„์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ

 


5. TypeScript ์ฃผ์š” ๊ธฐ๋Šฅ ๋ฐ ํ‚ค์›Œ๋“œ ์ •๋ฆฌ

์ฃผ์š” ๊ธฐ๋Šฅ

  • ์ธํ„ฐํŽ˜์ด์Šค(Interfaces): ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ๋ฅผ ์ •์˜ํ•˜๊ณ  ๊ทœ์น™ ์„ค์ •.
  • ํด๋ž˜์Šค(Classes): ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP) ๋ฐฉ์‹ ์ง€์›.
  • ์ œ๋„ค๋ฆญ(Generics): ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋†’์ž„.
  • ๋ชจ๋“ˆ(Modules): ๊ด€๋ จ ์ฝ”๋“œ๋“ค์„ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ๊ด€๋ฆฌ.

ํ‚ค์›Œ๋“œ ์ •๋ฆฌ

  • class: ํด๋ž˜์Šค ์ •์˜
  • constructor: ์ƒ์„ฑ์ž ํ•จ์ˆ˜ (ํด๋ž˜์Šค ์ดˆ๊ธฐํ™”)
  • export: ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉค๋ฒ„ ์ง€์ •
  • extends: ํด๋ž˜์Šค ์ƒ์†
  • implements: ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„
  • import: ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ
  • public/private: ๋ฉค๋ฒ„ ์ ‘๊ทผ ์ œ์–ด
  • =>: ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ๊ตฌ๋ฌธ (ES6)

6. TypeScript ๋ณ€์ˆ˜์™€ ํƒ€์ž…

๋ณ€์ˆ˜ ์„ ์–ธ ์˜ˆ์ œ

var str: string = 'hello';  // string ํƒ€์ž… ๋ณ€์ˆ˜ ์„ ์–ธ  

function greet(name: string): string {
  return 'Hello ' + name;
}

์ฃผ์š” ๋ฐ์ดํ„ฐ ํƒ€์ž…

  • any: ๋ชจ๋“  JavaScript ๊ฐ’ ํ—ˆ์šฉ
  • number: ์ •์ˆ˜์™€ ์‹ค์ˆ˜ ๋ชจ๋‘ ํฌํ•จ
  • boolean: true/false ๊ฐ’
  • string: ๋ฌธ์ž์—ด
  • null/undefined: ํ•ด๋‹น ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’
  • void: ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜
  • array: ๋ฐฐ์—ด ํƒ€์ž…
  • enum: ์—ด๊ฑฐํ˜•

7. TypeScript ํด๋ž˜์Šค ์˜ˆ์ œ

 
const Person = class {
  name: string;
  age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  greet(): void {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
};

const john = new Person('John', 30);
john.greet();
๋ฐ˜์‘ํ˜•