JSON Schema 对象动态转换为 Typescript 类型

Tob*_*obi 3 jsonschema typescript

我基本上想做这样的事情:

const jsonSchema = {...} as const;

type SchemaType = JsonSchemaToType<typeof jsonSchema>;
Run Code Online (Sandbox Code Playgroud)

这样我就可以做到:

export default (input: SchemaType) => {
   validate(input, jsonSchema)
   ...
}
Run Code Online (Sandbox Code Playgroud)

因此,可以进行模式验证以及基于相同模式的打字稿打字,最好是即时进行。

它基本上应该与这个网络工具相同: https: //transform.tools/json-schema-to-typescript ,但直接在我的代码中。

如果在普通打字稿中不可能,webpack 插件也会有帮助

Tob*_*obi 5

找到了一个真正完成这项工作的库:https ://www.npmjs.com/package/json-schema-to-ts

import type { FromSchema } from "json-schema-to-ts";
const jsonSchema = {...} as const;

type SchemaType = FromSchema<typeof jsonSchema>;

export default (input: SchemaType) => {
   validate(input, jsonSchema)
   ...
}
Run Code Online (Sandbox Code Playgroud)