고급 TypeScript - 타입스크립트와 Node.js: 모듈 시스템

타입스크립트와 Node.js: 모듈 시스템

타입스크립트는 자바스크립트를 기반으로 한 프로그래밍 언어로, 정적 타입을 지원하여 코드의 안정성과 가독성을 높입니다. Node.js는 서버 사이드 애플리케이션 개발을 위한 JavaScript 런타임 환경입니다. 이 두 가지를 결합하면 강력하고 효율적인 웹 애플리케이션을 만들 수 있습니다.

모듈 시스템 개요

모듈 시스템은 코드를 여러 파일로 나누고 각 파일에서 필요한 기능이나 변수를 가져오는 방식을 제공합니다. 이를 통해 코드의 재사용성을 높이고, 유지보수가 용이하게 됩니다.

Node.js에서는 CommonJS 모듈 시스템을 사용하며, ES6(ES2015)부터 도입된 ES 모듈도 사용할 수 있습니다. 타입스크립트는 두 가지 방식 모두 지원합니다.

CommonJS 모듈 시스템

CommonJS에서는 requiremodule.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에서는 importexport 키워드를 사용하여 더 직관적으로 모듈을 관리할 수 있습니다. 이는 브라우저에서도 사용할 수 있는 표준화된 방법입니다.

예제:

// 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 프로젝트에 통합하기 위해서는 다음과 같은 설정이 필요합니다:

  1. tsconfig.json 생성:

    {
        "compilerOptions": {
            "target": "es6",
            "module": "commonjs",
            "strict": true,
            "esModuleInterop": true,
            "skipLibCheck": true,
            "forceConsistentCasingInFileNames": true
        }
    }
    
  2. Type Definitions 설치:
    Node.js의 타입 선언 파일인 @types/node 패키지를 설치해야 합니다.

    npm install --save-dev @types/node
    
  3. 컴파일 및 실행:
    TypeScript 코드를 컴파일한 후 Node.js로 실행할 수 있습니다.

    tsc app.ts && node app.js
    

결론

타입스크립트와 Node.js의 조합은 개발자가 보다 안전하고 구조화된 코드를 작성하도록 돕습니다. 다양한 방식으로 제공되는 모듈 시스템 덕분에 대규모 애플리케이션에서도 코드 관리를 쉽게 할 수 있으며, 팀원 간 협업 시에도 명확한 규칙과 기준이 마련됩니다.

Subscribe to shimdh.log

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe