JSON → TypeScript 변환기

JSON을 붙여넣으면 중첩된 모든 객체에 대한 TypeScript 인터페이스가 생성되어 프로젝트에 바로 넣을 수 있습니다.

JSON에서 TypeScript 인터페이스 생성

API 응답 타입을 손으로 작성하면 시간이 오래 걸리고 실수하기 쉽습니다. 이 변환기는 JSON 샘플을 읽어 객체 형태마다 export된 interface를 하나씩 만들어 줍니다. 중첩 객체는 별도의 이름을 가진 interface가 되고, 배열은 string[]처럼 타입이 지정된 배열이 되며, 숫자·문자열·불리언은 각각 number, string, boolean으로 매핑됩니다. 출력에는 런타임 코드 없이 타입 선언만 들어 있으므로 번들 크기가 전혀 늘어나지 않습니다.

사용 방법

  1. 연동하려는 API의 실제 응답을 붙여넣습니다. 예를 들어 브라우저 개발자 도구의 네트워크 탭에서 복사할 수 있습니다.
  2. 타입 이름을 루트 객체가 나타내는 이름으로 지정합니다. 예: User, ApiResponse.
  3. 생성된 interface를 types.ts 파일에 복사하고 fetch 결과에 타입을 지정합니다. 예: const user: User = await res.json().

자주 묻는 질문

interface와 type alias 중 무엇을 생성하나요?
export된 interface를 생성합니다. API 데이터의 타입을 지정하는 용도라면 객체 type alias와 동일하게 동작하며, 복사한 뒤 자유롭게 이름을 바꾸거나 type으로 변환해도 됩니다.
선택적 속성(field?: string)은 어떻게 만드나요?
생성기는 샘플에 나타난 정보만 알 수 있습니다. 여러 객체를 배열에 넣고 그중 일부에서 해당 필드를 빼 두면 그 속성이 선택적으로 생성됩니다. 샘플에서 항상 null인 필드는 null 타입이 되므로, 실제 타입을 알고 있다면 실제 값을 넣어 주세요.
생성된 interface가 런타임에 데이터를 검증하나요?
아니요. TypeScript 타입은 컴파일 시점에 사라지므로 잘못된 형식의 응답이 와도 에러가 발생하지 않습니다. 런타임 검증이 필요하다면 JSON Schema 도구로 스키마를 생성해 검증하거나 검증 라이브러리를 사용하세요.

예시: JSON to TypeScript

입력 JSON

{
  "id": 42,
  "name": "Ada Lovelace",
  "email": "ada@example.com",
  "roles": ["admin", "editor"],
  "profile": { "bio": "Mathematician", "website": "https://example.com" }
}

생성된 TypeScript 코드 (User)

export interface User {
    id:      number;
    name:    string;
    email:   string;
    roles:   string[];
    profile: Profile;
}

export interface Profile {
    bio:     string;
    website: string;
}

다른 언어로 JSON 변환