在 Typescript 中使用 AJV 验证枚举
Validating enums with AJV in Typescript
假设我有这样的界面和架构:
enum FooEnum {
Bar = 'BAR',
}
interface Foo {
enumValue: FooEnum.Bar
}
const schema = JSONSchemaType<Foo> = {
type: 'object',
properties: {
enumValue: {
const: Foo[FooEnum.Bar]
}
}
}
这会失败,因为打字稿会抱怨这些不是同一类型。
两个(相关)问题:
如何在架构中使用 AJV 和 Typescript 以及常量值?即使枚举被替换为字符串文字,Typescript 也会抱怨(参见:https://github.com/ajv-validator/ajv/issues/1984)
AJV 能否将输入枚举值解析为它们应该作为实际枚举类型出现?如果是这样,我该如何设置该行为?
第一个问题的答案最终很简单:我需要为 jsonschema 中的 const 值指定一个类型。
constantValue: { type: 'string', const: 'FOO' }
第二个好像不行。
假设我有这样的界面和架构:
enum FooEnum {
Bar = 'BAR',
}
interface Foo {
enumValue: FooEnum.Bar
}
const schema = JSONSchemaType<Foo> = {
type: 'object',
properties: {
enumValue: {
const: Foo[FooEnum.Bar]
}
}
}
这会失败,因为打字稿会抱怨这些不是同一类型。
两个(相关)问题:
如何在架构中使用 AJV 和 Typescript 以及常量值?即使枚举被替换为字符串文字,Typescript 也会抱怨(参见:https://github.com/ajv-validator/ajv/issues/1984)
AJV 能否将输入枚举值解析为它们应该作为实际枚举类型出现?如果是这样,我该如何设置该行为?
第一个问题的答案最终很简单:我需要为 jsonschema 中的 const 值指定一个类型。
constantValue: { type: 'string', const: 'FOO' }
第二个好像不行。