TypeScript 개발 속도를 높이는 실전 팁: Claude Code 활용 가이드
Claude Code와 TypeScript로 API 응답 타입 자동 생성, any 제거, Zod 추론, 제네릭 이벤트 버스까지 6가지 실전 팁을 소개합니다.
TypeScript와 Claude Code는 환상의 조합
Claude Code는 TypeScript 타입 시스템을 깊이 이해하고 있어서 타입 정의 자동 생성부터 고급 제네릭 활용까지 폭넓게 지원합니다. 타입 에러 없는 견고한 코드를 빠르게 작성하는 방법을 소개합니다.
Tip 1: API 응답 타입 자동 생성
API 응답을 기반으로 타입 정의를 자동 생성하게 해 봅시다.
> 이 API 엔드포인트 응답을 기반으로 타입 정의를 만들어줘.
> curl http://localhost:3000/api/users/1 결과를 참고해서.
// Generated type definitions
interface User {
id: string;
email: string;
profile: {
firstName: string;
lastName: string;
avatar: string | null;
};
roles: Role[];
createdAt: string;
updatedAt: string;
}
interface Role {
id: string;
name: "admin" | "editor" | "viewer";
permissions: string[];
}
interface ApiResponse<T> {
data: T;
meta: {
requestId: string;
timestamp: string;
};
}
type UserResponse = ApiResponse<User>;
type UsersResponse = ApiResponse<User[]> & {
meta: { page: number; total: number };
};
Tip 2: any 타입 박멸
프로젝트 안의 any를 한 번에 적절한 타입으로 변환할 수 있습니다.
> 프로젝트 내 모든 any 타입을 찾아서
> 적절한 타입으로 변환해줘.
> 변환 후에는 npx tsc --noEmit으로 타입 체크 통과시켜줘.
Tip 3: 유틸리티 타입 활용
Claude Code가 적절한 유틸리티 타입을 제안해 줍니다.
> User 타입에서 업데이트용 타입을 만들어줘.
> id, createdAt, updatedAt은 제외하고, 나머지 필드는 모두 옵셔널로.
// Claude Code가 생성하는 타입
type UpdateUserInput = Partial<Omit<User, "id" | "createdAt" | "updatedAt">>;
Tip 4: Zod 스키마에서 타입 추론
유효성 검사 스키마와 타입 정의를 이중으로 관리하는 문제를 해소합니다.
> Zod 스키마를 정의하고 거기서 타입을 추론하는 패턴으로
> 리팩터링해줘. 수동으로 쓴 타입 정의는 삭제.
import { z } from "zod";
const UserSchema = z.object({
id: z.string().uuid(),
email: z.string().email(),
name: z.string().min(1).max(100),
role: z.enum(["admin", "editor", "viewer"]),
isActive: z.boolean().default(true),
});
// 타입은 스키마에서 자동 추론
type User = z.infer<typeof UserSchema>;
const CreateUserSchema = UserSchema.omit({ id: true });
type CreateUserInput = z.infer<typeof CreateUserSchema>;
Tip 5: 타입 가드 자동 생성
런타임 타입 체크 함수를 자동 생성하게 할 수 있습니다.
> ApiError, NetworkError, ValidationError의
> 타입 가드 함수를 만들어줘.
interface ApiError {
type: "api";
statusCode: number;
message: string;
}
interface NetworkError {
type: "network";
cause: Error;
}
interface ValidationError {
type: "validation";
fields: Record<string, string[]>;
}
type AppError = ApiError | NetworkError | ValidationError;
function isApiError(error: AppError): error is ApiError {
return error.type === "api";
}
function isNetworkError(error: AppError): error is NetworkError {
return error.type === "network";
}
function isValidationError(error: AppError): error is ValidationError {
return error.type === "validation";
}
에러 타입 설계 패턴에 대해서는 에러 핸들링 설계 패턴에서 자세히 다루고 있습니다.
Tip 6: 제네릭 활용
Claude Code는 복잡한 제네릭 코드도 정확하게 작성해 줍니다.
> 타입 안전한 이벤트 에미터를 만들어줘.
> 이벤트명과 인자의 타입을 정적으로 체크할 수 있도록.
type EventMap = {
"user:login": { userId: string; timestamp: Date };
"user:logout": { userId: string };
"error": { message: string; code: number };
};
class TypedEventEmitter<T extends Record<string, unknown>> {
private listeners = new Map<keyof T, Set<(data: never) => void>>();
on<K extends keyof T>(event: K, listener: (data: T[K]) => void): void {
if (!this.listeners.has(event)) {
this.listeners.set(event, new Set());
}
this.listeners.get(event)!.add(listener as (data: never) => void);
}
emit<K extends keyof T>(event: K, data: T[K]): void {
this.listeners.get(event)?.forEach(fn => fn(data as never));
}
}
const emitter = new TypedEventEmitter<EventMap>();
emitter.on("user:login", (data) => {
// data는 { userId: string; timestamp: Date }로 추론됨
console.log(data.userId);
});
CLAUDE.md에 TypeScript 규칙 설정
## TypeScript 규칙
- strict 모드 활성화 필수
- any 타입 사용 금지
- 타입 단언(as)은 최소한으로
- 유틸리티 타입을 적극 활용
생산성을 한층 더 끌어올리는 팁은 생산성을 3배 높이는 10가지 팁, React 개발에서의 활용법은 React 개발 초고속 가이드에서 확인하세요.
정리
Claude Code는 TypeScript 타입 시스템을 깊이 이해하고 있어 타입 정의 자동 생성부터 고급 제네릭까지 정확하게 지원합니다. 타입 안전성을 유지하면서 개발 속도를 한층 끌어올려 보세요.
자세한 내용은 TypeScript 공식 문서와 Anthropic 공식 문서를 참고하세요.
무료 PDF: 5분 완성 Claude Code 치트시트
이메일 주소만 등록하시면 A4 한 장짜리 치트시트 PDF를 즉시 보내드립니다.
개인정보는 엄격하게 관리하며 스팸은 보내지 않습니다.
이 글을 작성한 사람
Masa
Claude Code를 적극 활용하는 엔지니어. 10개 언어, 2,000페이지 이상의 테크 미디어 claudecode-lab.com을 운영 중.
관련 글
Claude Code용 CLAUDE.md 템플릿 7선 | 실제 프로젝트에 바로 붙여 넣는 예시
개인 앱, 콘텐츠 사이트, API, 팀 저장소, 레거시 코드베이스에 맞는 실전 CLAUDE.md 템플릿 7개와 피해야 할 실패 사례를 정리했습니다.
Claude Code Approval / Sandbox Guide | 매일 안전하게 쓰는 설정법
Claude Code의 allow, ask, deny, sandbox를 어떻게 나눌지, 실전 settings와 hooks, 실패 사례와 함께 정리합니다.
Claude Code 완벽 입문 가이드 2026 | 제로부터 실무 활용까지 7단계
Claude Code를 처음 사용하는 분들을 위한 완전 입문 가이드. 설치부터 실제 개발 워크플로우에 녹이는 것까지 — Masa가 처음에 겪었던 모든 시행착오를 바탕으로 정리했습니다.