Skip to content

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

@vamsiampolu

Description

@vamsiampolu

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions