quicktype
quicktype copied to clipboard
Typescript -> JSON Schema Output contains "type": "{string}" instead of "type": "string"
I am trying to convert a type that looks like:
import type {Person} from '@myorg/common-types"
export type MemberInfo = Required<Person>;
where person is defined in a common library:
export type Person = { /** * * @type {string} * @memberOf {Person} */ name: string; }
The output type looks something like:
```json
{
"type": "object",
"properties": {
"name": "{string}"
}
}
I used the following in an npm script:
{
"scripts": {
"generate:schema":"quicktype --src ./types/post/memberInfoTypes.ts --src-lang typescript --lang schema --out ./schemas/post/memberInfoSchema.json"
}
}
Issue Type
Quicktype Output (JSON Schema from Typescript)
Context (Environment, Version, Language)
Nodejs Version: v20.19.0 Package Manager: pnpm 10.6.2 OS: MacOS 15.4
Input Format: Typescript Output Language: JSON Schema
CLI Version: 23.0.171
Description
I would like to take existing typescript types and convert them to json schema for validation using something like ajv.
Input Data
export type MemberInfo = Required<Person>;
where person is defined in a common library:
export type Person = {
/**
*
* @type {string}
* @memberOf {Person}
*/
name: string;
}
Expected Behaviour / Output
The type string is valid JSON Schema while the type "{string}" is not.
{
"type": "object",
"properties": {
"name": "string"
}
}
Current Behaviour / Output
{
"type": "object",
"properties": {
"name": "{string}"
}
}
My wild guess is that it may be reading the JSDoc annotations and using them to infer types instead of relying on the typescript definition.
Steps to Reproduce
Clone the repo: https://github.com/vamsiampolu/quicktype-ts-to-json-schema-issue
- Run
nvm useto set the Node version - Run
pnpm installto install the dependencies. - Run the script
pnpm generate:schemafrom the repository