Skip to content
서버전송 없음 · 브라우저 처리

JSON→TS 변환

JSON을 보고 타입스크립트 interface를 추론해 만들어요.

즐겨찾기하면 홈에서 바로 찾을 수 있어요

이럴 때 쓰세요

API 응답 JSON으로 TypeScript interface 생성
중첩 객체를 interface로 뽑아 타입 정의
배열 응답에서 유니온 타입 추론

이렇게 사용하세요

11단계JSON 입력에 내용을 붙여넣으면 바로 시작해요
22단계변환 버튼을 누르면 결과가 아래에 나타나요
33단계복사 버튼으로 결과를 바로 가져다 쓸 수 있어요

결과가 예상과 다를 때

결과가 잘려 보여요

전체 결과는 복사 버튼으로 받을 수 있어요.

입력한 내용이 사라졌어요

이 기기에 자동 저장돼요. 브라우저 저장소를 지우면 함께 사라져요.

자주 하는 실수

계산 근거

TypeScript의 인터페이스는 선택 표시 ? 를 값의 존재 여부로 판단하지 않고 문법으로 표기합니다. 배열은 element 타입 뒤에 대괄호를 붙이며, 원소마다 타입이 다르면 괄호로 묶어 합집합으로 씁니다. 중첩 객체는 이름에서 영문자와 숫자만 남겨 인터페이스 이름으로 씁니다.

실제로 계산해 보면

id·name·tags·meta가 있는 객체를 변환하면 어떤 인터페이스가 나오나요?

Meta 와 Root 두 개가 나옵니다. Meta 는 open: boolean; score: null; 를 담고 Root 는 id: number; name: string; tags: string[]; meta: Meta; 를 담습니다.

배열에 숫자와 문자열이 섞여 있으면?

vals: (number | string | null)[] 처럼 합집합으로 나옵니다. 합집합 안의 null 은 그대로 null 이라 실제 응답에서 빠질 수 있는 값을 다뤄야 합니다.

안의 원소를 하나도 못 본 빈 배열은요?

빈 배열은 unknown[] 로 나옵니다. 안에 뭐가 들어갈지 알 수 없기 때문이며, 실제 타입으로 좁혀 쓰는 편이 안전합니다.

더 궁금한 것

선택 필드와 필수 필드는 어떻게 구분되나요?

구분되지 않습니다. 표본에 등장한 키는 모두 필수로 적힙니다. 한 건만 모은 표본을 넣으면 실제로는 없을 수 있는 필드까지 필수로 굳어 버리니, 생성 뒤 직접 물음표를 붙이세요.

interface 이름이 겹치면 어떻게 하나요?

같은 이름의 인터페이스를 여러 번 쓰면 컴파일러가 이름이 겹친다고 멈춥니다. 배열 요소를 하나로 통일하거나 루트 이름에 접미어를 붙여 이름이 달라지게 하세요.

최상위 키가 영문자가 아니면 어떻게 되나요?

영문자와 숫자를 제외한 문자는 지워집니다. 이름이 전부 사라지면 자리표시자로 쓰입니다. 그래도 필드 이름 자체는 원래대로 유지돼요.

알아둘 경계값

결과를 믿기 전 확인 목록

자주 묻는 질문

배열 안 객체가 다르면?

합집합 유니온 타입으로 추론합니다.

선택적 필드도 표시되나요?

배열 안에서 일부 객체에만 있는 키는 유니온 타입으로 추론해요. 필수/선택 구분은 생성 후 직접 조정하세요.

관련 도구

전체보기 →