고급 TypeScript - 타입스크립트와 Node.js: 타입 정의 파일 사용
타입스크립트와 Node.js: 타입 정의 파일 사용
타입스크립트는 JavaScript의 상위 집합으로, 정적 타입을 제공하여 코드의 안정성과 가독성을 높여줍니다. Node.js는 서버 사이드에서 JavaScript를 실행할 수 있는 환경을 제공합니다. 이 두 가지 기술을 결합하면 강력한 웹 애플리케이션 개발이 가능합니다.
1. 모듈 시스템
Node.js에서는 CommonJS 모듈 시스템을 사용하여 코드를 모듈화합니다. 각 파일은 독립적인 스코프를 가지고 있으며, 필요한 기능이나 변수를 require
로 가져오고, 다른 파일에 노출하려면 module.exports
를 사용합니다.
예제:
// math.ts
export function add(a: number, b: number): number {
return a + b;
}
// app.ts
import { add } from './math';
console.log(add(5, 3)); // 출력: 8
위 예제에서 math.ts
파일은 덧셈 기능을 정의하고 있습니다. 이를 app.ts
에서 가져와 사용할 수 있습니다.
2. 타입 정의 파일 사용
타입스크립트는 JavaScript 라이브러리와 프레임워크에 대한 타입 정보를 제공하기 위해 .d.ts
확장자를 가진 타입 정의 파일을 사용합니다. 이러한 파일들은 외부 라이브러리나 패키지의 API에 대한 정보가 포함되어 있어 IDE에서 자동 완성 및 오류 검사를 지원합니다.
- 타입 정의 파일 생성: 프로젝트 내에 직접 작성하거나 DefinitelyTyped 같은 저장소에서 다운로드받아 사용할 수 있습니다.
예제:
// myLibrary.d.ts (사용자 정의 타입 선언)
declare module 'myLibrary' {
export function greet(name: string): string;
}
위와 같이 사용자 정의 라이브러리에 대한 기본적인 타입 정보를 제공할 수 있습니다.
3. npm과 함께 사용하는 타입 패키지
많은 인기 있는 npm 패키지는 이미 TypeScript용으로 작성된 공식 또는 커뮤니티 기반의 타입 정의를 제공합니다. 이러한 패키지는 보통 @types/패키지명
형태로 설치할 수 있습니다.
설치 예시:
npm install @types/express --save-dev
이렇게 하면 Express.js 라이브러리에 대한 타이핑 정보가 추가되어 더 안전하게 사용할 수 있습니다.
4. 실용적인 예시 - Express 앱 구축
Express.js를 이용한 간단한 웹 서버를 만들어보겠습니다:
import express, { Request, Response } from 'express';
const app = express();
const PORT = process.env.PORT || 3000;
// 라우터 설정
app.get('/', (req: Request, res: Response) => {
res.send('Hello World!');
});
// 서버 시작
app.listen(PORT, () => {
console.log(`서버가 http://localhost:${PORT} 에서 실행 중입니다.`);
});
위 코드에서 TypeScript는 요청(Request
)과 응답(Response
) 객체의 형식을 명확히 하여 개발자가 쉽게 이해하고 활용할 수 있도록 도와줍니다.
요약
타입스크립트를 Node.js와 함께 사용하는 것은 코드 품질과 유지보수성을 크게 향상시킵니다. 모듈 시스템을 통해 코드를 구조화하고, 사용자 지정 및 외부 라이브러리를 위한 타이핑 정보를 활용함으로써 더욱 효율적이고 안전한 프로그래밍 경험을 할 수 있습니다.