본문 바로가기
개발정리 (nodeJS)

[nodeJS] Node.js에서 TypeScript 사용하기

by 할리갈리0 2024. 8. 6.

TypeScript는 Microsoft에서 개발한 프로그래밍 언어로, JavaScript의 모든 기능을 포함하면서 정적 타입을 추가합니다. TypeScript 코드는 컴파일러에 의해 JavaScript로 변환되며, 다양한 환경에서 실행될 수 있습니다.

 

[TypeScript의 장점]

  1. 타입 안전성: TypeScript는 정적 타입을 제공하여 타입 오류를 방지하고 코드의 안정성을 높임
  2. 가독성 향상: 코드의 구조를 명확히 정의하여 가독성을 향상시킴
  3. 개발자 도구 지원: 강력한 코드 자동 완성, 리팩토링, 오류 탐지 기능을 제공함
  4. 대규모 프로젝트 관리: 타입 정의와 모듈 시스템을 통해 대규모 프로젝트를 효율적으로 관리 가능

1. Node.js 프로젝트에 TypeScript 설정하기

Node.js 프로젝트를 초기화하고, TypeScript와 필요한 패키지 설치

typescript는 TypeScript 컴파일러를 제공하며, @types/node는 Node.js의 타입 정의 파일을 포함

ts-node는 TypeScript 코드를 직접 실행할 수 있게 해줌.

mkdir typescript-node
cd typescript-node
npm init -y
npm install typescript @types/node ts-node

 

TypeScript 설정 파일인 tsconfig.json 생성

TypeScript 컴파일러에 대한 다양한 옵션을 정의 필요
컴파일 타겟을 ES6로 설정하고, CommonJS 모듈 시스템을 사용하며, 엄격한 타입 검사를 활성화

// tsconfig.json
{
  "compilerOptions": {
    "target": "ES6",             // 컴파일 타겟을 ES6로 설정
    "module": "commonjs",        // 모듈 시스템을 CommonJS로 설정
    "strict": true,              // 엄격한 타입 검사 활성화
    "esModuleInterop": true,     // ES 모듈 호환성 설정
    "outDir": "./dist",          // 컴파일된 파일의 출력 디렉터리
    "rootDir": "./src"           // 소스 파일의 루트 디렉터리
  },
  "include": [
    "src/**/*.ts"                // 포함할 파일 경로 설정
  ],
  "exclude": [
    "node_modules"               // 제외할 파일 경로 설정
  ]
}

 

2. TypeScript의 기본 기능

TypeScript는 변수, 함수, 객체에 타입을 지정할 수 있는 타입 주석을 제공

// src/example.ts
function add(a: number, b: number): number {
  return a + b;
}

const result: number = add(5, 3);
console.log(`Result: ${result}`);

 

TypeScript의 인터페이스를 사용하여 객체의 구조 정의 가능

인터페이스를 통해 객체의 구조를 정의하고, 선택적 속성을 지원하여 유연성을 제공

// src/example.ts
interface User {
  id: number;
  name: string;
  email?: string; // 선택적 속성
}

const user: User = {
  id: 1,
  name: "John Doe",
};

console.log(user);

 

TypeScript는 클래스 기반 객체 지향 프로그래밍 지원

TypeScript 클래스는 생성자, 속성, 메서드를 통해 객체 지향 프로그래밍의 개념 제공

// src/example.ts
class Person {
  constructor(public name: string, public age: number) {}

  greet(): string {
    return `Hello, my name is ${this.name}.`;
  }
}

const person = new Person("Alice", 30);
console.log(person.greet());

 

3. Node.js와 TypeScript 통합하기

Express 모듈을 TypeScript로 작성하고, 요청 및 응답 객체에 타입을 지정

// src/server.ts
import express, { Request, Response } from 'express';

const app = express();
const port = 3000;

app.get('/', (req: Request, res: Response) => {
  res.send('Hello, TypeScript with Node.js!');
});

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

 

TypeScript 코드를 JavaScript로 컴파일하고 실행

npx tsc
node dist/server.js

 

또는 ts-node를 사용하여 TypeScript 코드를 직접 실행 가능

npx ts-node src/server.ts

 

4. 고급 TypeScript 기능 사용하기

제네릭은 다양한 타입에 대해 재사용 가능한 코드 작성 가능

제네릭 함수는 타입을 매개변수로 받아, 다양한 타입 처리 가능

// src/example.ts
function identity<T>(value: T): T {
  return value;
}

console.log(identity<number>(42));
console.log(identity<string>("Hello, World!"));

 

고급 타입을 사용하여 복잡한 타입 정의 가능

아래 코드는 교차 타입을 사용하여 두 개 이상의 타입을 결합하여 새로운 타입을 정의

// src/example.ts
type Point = {
  x: number;
  y: number;
};

type Circle = {
  radius: number;
};

type Shape = Point & Circle;

const shape: Shape = {
  x: 0,
  y: 0,
  radius: 10
};

console.log(shape);

 

 

Node.js에서 TypeScript를 사용하여 더 안전하고 관리하기 쉬운 코드를 작성하는 방법을 살펴보았습니다. TypeScript의 정적 타입, 인터페이스, 클래스, 제네릭을 통해 코드의 안정성과 가독성을 높일 수 있습니다.  TypeScript를 사용하여 더 나은 품질의 코드를 작성하고, 대규모 프로젝트를 효율적으로 관리할 수 있습니다.

반응형