타입 생성

JSON TypeScript 변환응답마다 달라지는 필드를 타입에 반영

예제에서 빠진 tag와 null인 score를 비교해 보세요. 명시적인 계약이 있다면 Schema 보조 모드를 선택하세요.

JSON TypeScript 변환

JSON 입력

현재 브라우저에서 해석하고 생성합니다. 입력을 업로드하거나 저장하지 않습니다.

TypeScript 결과

생성 옵션

누락 필드는 선택 속성, null은 그대로, 빈 배열은 unknown[]입니다. 프로젝트에서 strictNullChecks를 사용하세요.

선언 3개 · 선택 속성 1개

JSON TypeScript 변환은 API 응답을 처음 모델링할 때 유용합니다. 정상 응답 한 건만 보면 가끔 빠지는 필드가 필수처럼 보일 수 있습니다. 다양한 기록을 하나의 배열에 모아야 차이를 확인할 근거가 생깁니다.

속성이 없는 경우와 값이 null인 경우를 따로 표현합니다. 결과는 검토를 시작할 초안이며, 아직 들어오지 않은 응답이나 업무 규칙까지 알아내지는 못합니다. 생성한 선언을 실제 API 문서와 함께 확인하세요.

JSON TypeScript 변환을 사용하는 이유

배열의 첫 항목에서 멈추지 않기

JSON TypeScript 변환은 제공된 배열 요소를 모두 분석합니다. 어떤 객체에 tag가 없으면 선택 속성이 되고, score에 숫자와 null이 있으면 유니온 타입이 됩니다. 누락과 빈 값을 하나의 옵션으로 섞지 않습니다.

두 레코드가 하나의 타입으로 합쳐지며 누락은 점선으로, 명시적 null은 속이 빈 표시로 남는 그림.

샘플에 없는 규칙은 계약으로 전달

Schema에는 필수 속성과 열거 가능한 값을 적을 수 있습니다. 입력 모드를 직접 선택해서 사용하세요. 지원하지 않는 제약은 경로를 표시하고 중단하므로 일부 지시가 빠진 타입을 완성된 결과로 내보내지 않습니다.

샘플과 구조 계약이 각각의 경로를 따라 타입 선언 카드로 연결되는 그림.

내보내기 전에 살펴볼 세 가지

01

같은 위치의 기록을 비교하기

여러 JSON 문서를 이어 붙이지 말고 레코드를 하나의 배열로 구성하세요. 같은 구조 위치의 객체끼리 필드를 비교하며, 문서의 다른 위치에서 이름만 같은 속성은 하나로 합치지 않습니다.

02

입력 모드에 맞는 예제 사용하기

모드를 바꿔도 입력은 유지됩니다. 예제 버튼은 선택한 모드의 내용을 불러옵니다. Schema에서는 required가 필수 여부를 정하므로 샘플의 모든 필드를 선택 사항으로 만드는 옵션이 비활성화됩니다.

03

수정 후 최신 결과 확인하기

자동 생성은 편집 후 350밀리초 뒤에 실행됩니다. 끄면 생성 버튼이 나타나며 Ctrl/Cmd+Enter도 사용할 수 있습니다. 입력이나 설정을 바꾸면 최신 생성이 성공하기 전까지 복사와 다운로드가 비활성화됩니다.

값에서 구조와 선언으로

모든 배열 요소를 타입 추론에 사용

같은 위치에 숫자와 문자열이 있으면 유니온을 만듭니다. 중첩 배열도 분석하고, 빈 배열과 값이 있는 배열이 함께 있으면 알려진 요소 타입을 사용합니다. 아무 근거가 없는 빈 배열은 unknown[]로 남습니다.

선택 속성과 null의 의미 보존

일부 객체에서 빠진 속성에는 ?가 붙습니다. null은 실제 값이므로 null 또는 이를 포함하는 유니온으로 유지합니다. null만으로 이후의 문자열이나 숫자를 추측하지 않습니다. 프로젝트에서 strictNullChecks를 켜면 이 구분을 활용할 수 있습니다.

이름이 있는 중첩 객체 선언

인터페이스 자동 생성은 Root와 상위 필드를 바탕으로 이름을 만들고 충돌 시 숫자 접미사를 붙입니다. 공백이나 하이픈을 포함한 원래 속성 이름은 따옴표로 보존합니다. 루트 이름은 예약어를 제외한 64자 이하 ASCII 식별자여야 합니다.

제한된 Schema 입력 지원

TypeScript 변환기는 기본 타입, properties, required, 단일 items, 불리언 additionalProperties, 스칼라 enum/const, 제한된 anyOf를 처리합니다. 객체 선언을 interface 또는 type으로 고르고 export와 2칸·4칸 들여쓰기를 설정할 수 있습니다.

추론이 보장하지 않는 부분

응답 한 건은 전체 계약이 아님
샘플에 없는 필드나 타입은 알 수 없습니다. 객체 배열을 필드별로 병합하므로 판별값과 다른 속성 간의 상관관계도 보존하지 않습니다. 날짜와 UUID처럼 보이는 문자열은 string이며, 샘플 값으로 열거형을 추측하지 않습니다.
실행 시 검증은 별도 구현
생성물은 정적 선언입니다. 파서, 클래스, Zod, 직렬화 함수는 만들지 않습니다. integer도 number이며 정수 범위나 정밀도를 강제하지 않습니다. additionalProperties=false는 인덱스 시그니처를 없애지만 런타임의 추가 속성을 검사하지는 않습니다.
지원 범위 밖의 Schema는 오류
참조, 정의, oneOf/allOf, 조건, format, 패턴, 길이, 범위, 튜플은 거부합니다. 객체나 배열 키워드에는 해당 타입을 명시해야 합니다. Schema 형태의 additionalProperties, 객체·배열 enum, 안전한 크기를 넘거나 무한대가 되는 숫자 리터럴도 지원하지 않습니다.
엄격한 단일 JSON 문서
주석, 마지막 쉼표, 중복 키와 JSONL은 변환을 중단합니다. 문법 오류는 행과 열을 표시합니다. 자동 복구, URL 가져오기, 파일 입력이나 일괄 처리는 없으며, 일반 데이터의 type 필드로 Schema 모드를 자동 선택하지 않습니다.
부분 결과 대신 명확한 제한
입력은 500,000자, 깊이 100, 50,000노드까지입니다. 출력은 1,000,000자와 1,000개 선언으로 제한합니다. 초과 시 잘린 코드를 내보내지 않습니다. 정보가 없는 빈 객체에는 너무 넓은 {} 대신 unknown 인덱스 시그니처를 사용합니다.

JSON TypeScript 변환 질문

interface와 type alias 중 무엇을 선택하면 되나요?

프로젝트의 선언 방식에 맞추세요. interface는 객체 선언에 적용됩니다. 루트가 배열, 기본 타입 또는 유니온이면 interface를 선택해도 외부 선언에는 type 별칭이 필요합니다.

배열 안 객체의 키 구성이 다르면 어떻게 되나요?

동일한 배열 위치의 모든 객체에서 키를 모읍니다. 일부 객체에서 빠진 키는 선택 속성이고, 관찰된 값은 유니온으로 표현합니다. 한 항목만 넣으면 어떤 필드가 빠질 수 있는지 알 수 없습니다.

Date, Map, Set, BigInt 같은 런타임 타입도 추론하나요?

아니요. JSON TypeScript 변환은 JSON에 표현된 구조와 값만 다룹니다. 날짜 문자열은 string, 숫자는 number입니다. 실제 런타임 객체로 바꾸는 코드는 별도로 작성해야 합니다.

null 값은 어떻게 처리되나요?

null을 삭제하거나 선택 속성으로 바꾸지 않습니다. null만 있으면 타입도 null이고, 숫자와 함께 나타나면 number | null입니다. 속성 자체가 빠지는지는 별도의 존재 여부로 판단합니다.

배열이 비어 있으면 어떻게 되나요?

요소에 대한 근거가 없으면 unknown[]입니다. 같은 위치의 다른 배열에 요소가 있다면 해당 타입을 함께 추론합니다. 빈 배열만 보고 string[]이나 임의의 객체 배열이라고 가정하지 않습니다.

확인이 필요한 추론 결과가 있나요?

대표 응답 여러 건으로 시작하세요

JSON TypeScript 변환에 여러 응답을 넣고 선택 속성과 null을 비교하세요. 이름과 선언 방식을 확인한 뒤 프로젝트에서 검토할 코드를 내보낼 수 있습니다.