왼쪽에 TypeScript를 붙여 넣고 "변환"을 클릭하세요 — JSON으로 바꿔드립니다TypeScript 붙여넣기

이 도구가 하는 일

TypeScript interface와 타입 지정된 객체 리터럴, 또는 const config: Config = {...} 같은 할당이 있고, 그 값을 API 요청, fixture, OpenAPI 예시에 쓸 실제 JSON으로 바꾸고 싶을 때가 있습니다. 블록 전체를 여기에 붙여 넣으세요. 타입 주석을 제거하고 리터럴을 해석해서 어디서든 파싱되는 JSON을 돌려드립니다.

타입 전용 문법은 TypeScript 컴파일러가 emit 시점에 처리하는 방식 그대로 다뤄집니다. interface와 type alias는 제거되고, as constsatisfies는 출력에 영향을 주지 않으며, Record<string, X>는 객체 그대로 유지되고, readonly? 수식자는 JSON에서 무시됩니다(optional인데 값이 없는 필드는 그냥 빠집니다). 문자열 따옴표 처리는 JSON.stringify와 동일하게 큰따옴표와 필요한 경우 escape를 적용하며, 키는 언제나 문자열입니다.

enum은 런타임 값을 그대로 emit합니다. 숫자 enum은 숫자, 문자열 enum은 문자열이 됩니다. Date 인스턴스는 RFC 8259에 따라 ISO-8601로 나갑니다. undefined 프로퍼티는 빠지고 nullnull로 남습니다. interface와 그 인스턴스 여러 개를 한 번에 붙여 넣어도 됩니다 — 각 인스턴스는 JSON의 최상위 엔트리로 들어갑니다.

사용 방법

세 단계입니다. 다섯 줄짜리 interface든 <code>types.ts</code> 모듈 전체든 상관없이 동작합니다.

1

TypeScript 붙여 넣기 (또는 샘플 사용)

왼쪽 에디터에 던져 넣으세요. interface + 타입 지정 객체, type alias, enum 정의, export된 const 선언 — 전부 괜찮습니다. 샘플 불러오기를 눌러 실제 입력이 어떻게 생겼는지 확인해 보세요.

TypeScript handbook 스타일의 문법을 그대로 두세요 — generic, decorator, import type을 굳이 지울 필요가 없습니다. JS에서 JSON으로의 매핑이 어떻게 되는지 다시 보고 싶다면 MDN JSON 레퍼런스를 참고하세요.

2

변환 누르기

초록색 변환 버튼을 클릭하세요. 타입 정보를 지우고 리터럴 값을 평가한 뒤 JSON.stringify(obj, null, 2)와 같은 방식으로 직렬화합니다.

3

JSON 복사

오른쪽 패널에 예쁘게 정리된 JSON이 나옵니다. 요청 body, OpenAPI 예시, 유닛 테스트 fixture에 그대로 넣으면 됩니다.

실제로 쓸모 있는 순간

API 요청 예시

Angular, Next.js, NestJS 요청 DTO가 있고 Swagger, Postman, curl 명령에 쓸 JSON payload가 필요할 때. interface와 객체를 붙여 넣으면 JSON이 나옵니다.

유닛 테스트 fixture

Jest나 Vitest 테스트에서 쓰던 인라인 타입 mock을 MSW, Playwright, 통합 테스트용 독립 JSON fixture로 바꿔 보세요.

OpenAPI와 JSON Schema 예시

<code>User</code> interface와 샘플 인스턴스를 붙여 넣으면 <a href="https://swagger.io/specification/" target="_blank" rel="noopener">OpenAPI</a> 스키마의 <code>example</code> 블록을 한 번에 만들 수 있습니다.

설정을 JSON으로 옮기기

타입이 있는 <code>config.ts</code>에서 JSON 기반 설정 저장소로 넘어가는 중이신가요? 타입 const를 붙여 넣고 깔끔한 JSON을 받아 새 설정 시스템에 넣으세요.

자주 묻는 질문

타입 주석과 generic을 벗겨 주나요?

네. interface, type alias, generic 파라미터, as cast, satisfies, readonlyTypeScript 컴파일러가 지우는 것과 똑같은 방식으로 전부 제거됩니다. JSON에는 런타임 값만 남습니다.

enum은 어떻게 처리되나요?

숫자 enum은 숫자, 문자열 enum은 문자열을 emit합니다. 변환 관점에서 const enum은 일반 enum과 동일하게 다뤄집니다. 객체 리터럴 안의 enum 참조는 선언된 값으로 해석됩니다.

optional 필드와 Record 타입은요?

값이 없는 optional 필드(name?: string)는 JSON에 아예 나타나지 않습니다 — JSON.stringify 기본 동작과 같습니다. Record<string, X>는 주어진 문자열 키를 가진 JSON 객체로 그대로 남습니다.

타입 파일을 통째로 붙여 넣어도 되나요?

네. 여러 개의 interface, type alias, enum, 타입 const를 한 번에 붙여 넣을 수 있습니다. 최상위 타입 인스턴스는 각각 JSON의 자체 엔트리가 되고, 중첩된 타입은 제자리에서 펼쳐집니다.

Date, null, undefined는 어떻게 처리되나요?

Date 값은 ISO-8601 문자열이 됩니다. null은 JSON null로 유지됩니다. undefined 프로퍼티는 객체에서 빠집니다. 배열에서 undefined 원소는 그 자리에 null이 들어갑니다 — JSON.stringify와 동일한 동작입니다.

제 코드가 저장되나요?

코드는 변환을 위해서만 백엔드로 전송됩니다. 로그에도 남기지 않고 영구 저장도 하지 않습니다. 민감한 내용을 붙여 넣으실 거라면 먼저 한 번 훑어보세요.

같이 쓰면 좋은 도구

TypeScript to JSON은 퍼즐의 한 조각일 뿐입니다. 함께 쓰면 좋은 도구들은 이렇습니다: