Tips & Tricks

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 공식 문서를 참고하세요.

#Claude Code #TypeScript #타입 안전 #개발 효율 #frontend

Claude Code 워크플로우를 한 단계 업그레이드하세요

지금 바로 Claude Code에 복사해 쓸 수 있는 검증된 프롬프트 템플릿 50선.

무료 제공

무료 PDF: 5분 완성 Claude Code 치트시트

주요 명령어, 단축키, 프롬프트 예시를 A4 한 장에 정리했습니다.

PDF 다운로드
M

이 글을 작성한 사람

Masa

Claude Code를 적극 활용하는 엔지니어. 10개 언어, 2,000페이지 이상의 테크 미디어 claudecode-lab.com을 운영 중.