.required()
用于声明一个必需的配置项
.default()
用于设置某个配置项的默认值
.required()
与 .default()
不能同时使用。
文档 Intersect + Union:配置联动 1 一章中, 提到由于配置项默认情况下都是可选的,所以下方的 enabled
如果类型与上方的默认值不同,就必须加上 required()
我在仿照文档写配置是遇到了问题:必须将log配置为true,否则会报当前配置项不满足约束,请检查配置!
下面是我的配置:
export interface Config {
log: boolean
max_log?: number
only_success?: boolean
log_type?: string[]
}
export const Config: Schema<Config> = Schema.intersect([
Schema.object({
log: Schema.boolean().default(false).description('是否记录日志'),
}).description('日志设置'),
Schema.union([
Schema.object({
log: Schema.const(true).required(),
only_success: Schema.boolean().default(true).description('是否只记录操作成功的日志'),
max_log: Schema.number().default(100).description('最多记录日志数量'),
log_type: Schema.array(
Schema.union([
Schema.const('get').description('get-获取积分'),
Schema.const('set').description('set-设置积分'),
Schema.const('add').description('add-增加积分'),
Schema.const('reduce').description('reduce-减少积分')
])
).default(['add', 'reduce']).role('checkbox').description('记录日志的类型'),
})
]),
])