고급 TypeScript - 타입스크립트와 Node.js: 모듈 시스템
타입스크립트와 Node.js: 모듈 시스템
타입스크립트는 자바스크립트를 기반으로 한 프로그래밍 언어로, 정적 타입을 지원하여 코드의 안정성과 가독성을 높입니다. Node.js는 서버 사이드 애플리케이션 개발을 위한 JavaScript 런타임 환경입니다. 이 두 가지를 결합하면 강력하고 효율적인 웹 애플리케이션을 만들 수 있습니다.
모듈 시스템 개요
모듈 시스템은 코드를 여러 파일로 나누고 각 파일에서 필요한 기능이나 변수를 가져오는 방식을 제공합니다. 이를 통해 코드의 재사용성을 높이고, 유지보수가 용이하게 됩니다.
Node.js에서는 CommonJS 모듈 시스템을 사용하며, ES6(ES2015)부터 도입된 ES 모듈도 사용할 수 있습니다. 타입스크립트는 두 가지 방식 모두 지원합니다.
CommonJS 모듈 시스템
CommonJS에서는 require
와 module.exports
를 사용하여 모듈을 정의하고 가져옵니다.
예제:
// math.ts (모듈 정의)
export function add(a: number, b: number): number {
return a + b;
}
export function subtract(a: number, b: number): number {
return a - b;
}
// app.ts (모듈 사용)
import { add, subtract } from './math';
const sum = add(5, 3);
const difference = subtract(10, 4);
console.log(`Sum: ${sum}, Difference: ${difference}`);
위 예제에서 math.ts
파일은 두 개의 함수를 내보내고 있으며 (add
, subtract
), app.ts
파일에서 이들을 가져와서 사용할 수 있습니다.
ES6 모듈 시스템
ES6에서는 import
와 export
키워드를 사용하여 더 직관적으로 모듈을 관리할 수 있습니다. 이는 브라우저에서도 사용할 수 있는 표준화된 방법입니다.
예제:
// user.ts (유저 관련 데이터 정의)
export interface User {
id: number;
name: string;
}
// userService.ts (유저 서비스 구현)
import { User } from './user';
const users: User[] = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' }
];
export function getUsers(): User[] {
return users;
}
// app.ts (애플리케이션 실행)
import { getUsers } from './userService';
const allUsers = getUsers();
console.log(allUsers);
여기서는 유저 정보를 담고 있는 인터페이스를 정의하고 해당 인터페이스를 사용하는 함수가 포함된 서비스를 만들어 보았습니다.
타입스크립트 설정 및 컴파일
타입스크립트를 Node.js 프로젝트에 통합하기 위해서는 다음과 같은 설정이 필요합니다:
-
tsconfig.json 생성:
{ "compilerOptions": { "target": "es6", "module": "commonjs", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true } }
-
Type Definitions 설치:
Node.js의 타입 선언 파일인 @types/node 패키지를 설치해야 합니다.npm install --save-dev @types/node
-
컴파일 및 실행:
TypeScript 코드를 컴파일한 후 Node.js로 실행할 수 있습니다.tsc app.ts && node app.js
결론
타입스크립트와 Node.js의 조합은 개발자가 보다 안전하고 구조화된 코드를 작성하도록 돕습니다. 다양한 방식으로 제공되는 모듈 시스템 덕분에 대규모 애플리케이션에서도 코드 관리를 쉽게 할 수 있으며, 팀원 간 협업 시에도 명확한 규칙과 기준이 마련됩니다.