TypeScript는 Microsoft에서 개발한 프로그래밍 언어로, JavaScript의 모든 기능을 포함하면서 정적 타입을 추가합니다. TypeScript 코드는 컴파일러에 의해 JavaScript로 변환되며, 다양한 환경에서 실행될 수 있습니다.
[TypeScript의 장점]
- 타입 안전성: TypeScript는 정적 타입을 제공하여 타입 오류를 방지하고 코드의 안정성을 높임
- 가독성 향상: 코드의 구조를 명확히 정의하여 가독성을 향상시킴
- 개발자 도구 지원: 강력한 코드 자동 완성, 리팩토링, 오류 탐지 기능을 제공함
- 대규모 프로젝트 관리: 타입 정의와 모듈 시스템을 통해 대규모 프로젝트를 효율적으로 관리 가능
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를 사용하여 더 나은 품질의 코드를 작성하고, 대규모 프로젝트를 효율적으로 관리할 수 있습니다.
'개발정리 (nodeJS)' 카테고리의 다른 글
[nodeJS] Node.js와 gRPC를 사용한 고성능 서비스 구축하기 (0) | 2024.08.26 |
---|---|
[nodeJS] Node.js와 RabbitMQ를 사용한 메시지 큐 시스템 구축하기 (0) | 2024.08.14 |
[nodeJS] Node.js에서 서버사이드 렌더링(SSR) 구현하기 (0) | 2024.08.02 |
[nodeJS] Node.js에서 로그 관리하기 (0) | 2024.07.15 |
[nodeJS] Node.js로 tRPC API 만들기 (0) | 2024.07.11 |