Skip to content

Typescript -> JSON Schema Output contains "type": "{string}" instead of "type": "string" #2695

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
vamsiampolu opened this issue Apr 8, 2025 · 0 comments
Labels

Comments

@vamsiampolu
Copy link

vamsiampolu commented Apr 8, 2025

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

  1. Run nvm use to set the Node version
  2. Run pnpm install to install the dependencies.
  3. Run the script pnpm generate:schema from the repository

Possible Solution

@vamsiampolu vamsiampolu added the bug label Apr 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant