사용 방법
- 입력 상자에 JSON을 붙여넣거나 .json 파일을 열거나 예제를 사용해 보세요.
- Order 또는 ApiResponse처럼 루트 타입 이름을 지정하세요.
- interface 또는 type 선언을 선택하고 export와 readonly 추가 여부를 정하세요.
- 생성된 TypeScript를 복사하거나 types.ts로 다운로드하세요.
작동 방식
생성기는 전체 JSON 문서를 탐색하고 각 위치에서 발견된 값의 종류를 기록합니다. 각 JSON 객체는 고유한 이름의 선언이 됩니다. 이름은 PascalCase로 표기된 속성 키에서 가져오므로 “shipping_address”는 ShippingAddress가 됩니다. 배열의 항목은 키의 단수형으로 이름이 지정됩니다. “items”는 Item이 되고, “categories”는 Category가 되며, 복수형처럼 보이지 않는 키에는 “Item” 접미사가 붙습니다.
하나의 배열 안에 있는 모든 객체는 하나의 interface로 병합됩니다. 키가 일부 객체에만 나타나면 “?”로 선택적(optional)으로 표시됩니다. 값의 종류가 위치에 따라 다르면 string | number와 같은 유니온 타입이 됩니다. null은 고유한 타입으로 유지되므로 때때로 null인 필드는 string | null이 됩니다. 빈 배열은 추론할 내용이 없으므로 unknown[]이 됩니다. 속성과 타입이 완전히 같은 두 객체는 중복을 만들지 않고 하나의 interface를 공유합니다. “first-name”처럼 유효한 식별자가 아닌 키는 따옴표로 묶입니다.
결과는 붙여넣은 샘플만 설명합니다. 실제로는 선택적이거나 null일 수 있는 필드가 샘플에 그렇게 나타나지 않으면 필수(required)이고 null이 아닌 것으로 처리되며, 날짜는 일반 문자열로 표시됩니다. 타입을 신뢰하기 전에 API 문서와 대조해 검토하세요.
예시
API 응답 타입 지정하기
상점 API에서 주문 하나를 붙여넣고 루트 이름을 Order로 지정하세요. Order, Customer, Item, Shipping interface가 생성되며, 두 항목 중 하나에만 note가 있어서 Item에 note?: string이 표시됩니다.
읽기 전용 설정
config.json을 붙여넣고 “속성을 읽기 전용으로 만들기”를 선택한 뒤 결과를 config.d.ts에 붙여넣으면, 컴파일러가 설정에 대한 실수로 인한 쓰기를 잡아줍니다.
최상위 배열
목록 엔드포인트가 [{…}, {…}]를 반환합니다. 루트 이름을 Product로 지정하면 출력은 “export type Product = ProductItem[];”로 시작하고 이어서 ProductItem interface가 표시됩니다.
자주 묻는 질문
출력에서 필드가 선택 사항인 이유는 무엇인가요?
같은 배열의 객체 중 하나라도 해당 키가 없기 때문입니다. 모든 객체에 키가 있으면 필수로 처리됩니다. 더 정확한 선택적 필드를 보려면 여러 레코드를 붙여넣으세요.
날짜가 문자열로 표시되는 이유는 무엇인가요?
JSON에는 날짜 타입이 없으므로 날짜는 문자열로 전달됩니다. 생성기는 형식을 추측하지 않습니다. 코드에서 Date 객체로 변환한다면 타입을 직접 변경하세요.
interface와 type의 차이는 무엇인가요?
객체 모양에서는 거의 동일하게 동작합니다. 인터페이스는 나중에 선언으로 확장 및 병합할 수 있지만 타입 별칭은 다시 열 수 없습니다. 코드베이스에서 이미 사용하는 스타일을 선택하세요.
Zod 스키마 같은 런타임 검증도 생성할 수 있나요?
아니요. 컴파일 시에만 검사되는 TypeScript 선언만 생성하며 런타임에는 데이터를 검증하지 않습니다.
개인정보 보호
JSON은 브라우저에서만 분석됩니다. 업로드되거나 저장되거나 분석에 포함되지 않습니다.