UTILS.
100% 브라우저 내 실행
📘

JSON Schema를 TypeScript로 변환

JSON Schema(draft-07 또는 2020-12)를 TypeScript 인터페이스와 타입 별칭으로 컴파일합니다. required, enum, $ref, 배열, 조합자를 처리합니다.

출력

이 도구에 대하여

JSON Schema를 TypeScript로 변환 도구는 JSON Schema 문서를 TypeScript 인터페이스와 타입 별칭으로 컴파일하여, 인기 있는 json-schema-to-typescript 라이브러리가 하는 일을 툴체인 설치 없이 수행합니다. JSON 샘플 변환기와 달리 이 도구는 실제 스키마를 읽습니다. 스키마 객체를 순회하며 type:'object'를 인터페이스로 바꾸는데, required에 나열된 키는 필수가 되고 나머지는 ?로 표시됩니다.

모든 것이 JSON.parse와 순수 JavaScript로 브라우저에서 로컬로 파싱되고 생성되므로 스키마가 페이지를 떠나지 않습니다. enum이 있는 문자열 스키마는 문자열 리터럴의 유니온이 되고, 순수 string, number/integer, boolean, null은 각자의 TypeScript 등가물로 매핑되며, 배열은 T[](items가 배열이면 튜플)이 됩니다. 조합자가 지원됩니다. allOf는 교차(A & B)가 되고 anyOf / oneOf는 유니온(A | B)이 되며, nullable한 type:[T,'null']은 T | null이 됩니다.

참조는 이름으로 해석됩니다. #/definitions/X 또는 #/$defs/X를 가리키는 $ref는 이름 있는 타입 참조를 출력하며, 모든 정의는 각자의 export interface나 export type으로 생성됩니다. additionalProperties는 인덱스 시그니처 [key: string]: T를 추가합니다. 루트 타입 이름은 스키마의 title이나 $id로 대체됩니다. 인터페이스와 타입 출력 여부, 그리고 스키마 description 문자열을 JSDoc /** */ 주석으로 만들지를 토글하세요. 결과를 복사하거나 .ts 파일로 다운로드할 수 있습니다.

자주 묻는 질문

어떤 JSON Schema 기능이 지원되나요?
properties와 required가 있는 object, 리터럴 유니온으로서의 string enum, number/integer/boolean/null, 배열(튜플 포함), allOf/anyOf/oneOf 조합자, definitions나 $defs에 대한 $ref, 인덱스 시그니처로서의 additionalProperties, 그리고 ["string","null"] 같은 nullable 타입 배열이 지원됩니다.
$ref와 definitions는 어떻게 처리되나요?
#/definitions/Address(또는 #/$defs/Address) 같은 $ref는 이름 있는 타입 Address에 대한 참조가 되고, definitions나 $defs 아래의 각 항목은 각자의 export interface나 export type으로 출력되므로 참조가 출력 내에서 해석됩니다.
루트 타입의 이름은 무엇으로 정해지나요?
루트 이름 상자를 설정했으면 그것, 아니면 스키마의 title, 아니면 $id의 마지막 세그먼트, 그것도 아니면 Root입니다. 정의 이름은 definitions나 $defs에서의 키를 PascalCase로 변환한 것에서 옵니다.
스키마 설명을 유지할 수 있나요?
네. JSDoc을 켜면(기본값) 스키마나 속성의 모든 description 문자열이 해당 타입이나 필드 위에 /** ... */ 주석으로 출력되어, 생성된 TypeScript에 문서가 보존됩니다.

더 많은 도구