본문으로 건너뛰기
yutils
예시

입력 (JSON)

{
  "id": 1,
  "name": "yutils",
  "active": true,
  "owner": { "email": "hello@yutils.dev", "verified": false }
}

출력 (TypeScript 타입)

interface Root {
  id: number;
  name: string;
  active: boolean;
  owner: Owner;
}

interface Owner {
  email: string;
  verified: boolean;
}

참고

중첩 객체는 별도 interface 로 추출됩니다. 배열은 첫 요소 기준으로 타입 추론. null 이 섞이면 union 으로 표현됩니다.

사용법 / 자주 묻는 질문

이런 경우 사용하세요

  • API 응답 JSON 샘플로부터 TypeScript 타입 즉시 추출
  • Postman · cURL 결과를 빠르게 코드 타입으로 변환
  • 외부 SDK 응답 모킹 시 초기 타입 시드 생성
  • 타입 정의 직접 작성하지 않고 1차 초안 빠르게 확보
  • 중첩 객체가 깊을 때 interface 자동 분리

자주 묻는 질문

Q.이름은 어떻게 지어지나요?
A.최상위는 `Root`, 중첩 객체는 부모 키 이름의 PascalCase 변환을 사용합니다. 마음에 들지 않으면 출력 후 일괄 rename 하세요.
Q.optional 필드는 어떻게 표현되나요?
A.JSON 단일 샘플에서는 모든 필드가 존재한다고 가정합니다. 여러 샘플 기반 union/optional 추론이 필요하면 결과를 수동 보정해야 합니다.
Q.Zod 나 io-ts 스키마도 만들 수 있나요?
A.현재 출력은 plain TypeScript interface 만 지원합니다. runtime 검증이 필요하면 결과를 Zod 스키마로 변환하는 별도 단계가 필요합니다.
재미있는 사실
  • TypeScript 는 2012년 Microsoft 의 Anders Hejlsberg 가 발표 — 그는 Turbo Pascal (1983), Delphi (1995), C# (2000) 를 만든 사람으로 'C# 의 자바스크립트 버전' 이라는 평이 있었습니다. 'JavaScript 가 큰 codebase 에 적합하지 않다' 는 문제 의식이 출발점.

    Wikipedia — TypeScript history
  • TypeScript 의 'structural typing' (duck typing) 은 Java/C# 의 'nominal typing' 과 다릅니다 — 클래스 이름이 아니라 shape (속성·메서드 구조) 으로 호환성 판단. JSON 에서 변환된 interface 가 자연 동작하는 이유.

    TS Handbook
  • JSON → TypeScript 추론은 'never been seen' 케이스가 어렵습니다. 빈 배열 `[]` 은 `unknown[]` ? `never[]` ? `any[]` ? — 좋은 generator 는 컨텍스트 (key 이름·sibling samples) 로 추론하지만, 결정적 답은 사용자가 직접 명시해야 합니다. JSON Schema 와 같은 함정.

    TS — Everyday Types