Skip to content

Dynamic:动态类型

TIP

此类型只能在 Koishi 中使用。

WARNING

此特性为实验性功能,未来可能会有改动。

Schema.dynamic() 用于使用动态类型。例如某个服务需要在运行时才能获取某个配置项的可能取值,而基于此服务的其他插件的配置又需要从这些值中选择一个。这个时候,实现服务的插件可以使用 ctx.schema.set() 来定义动态的类型,使用服务的插件则可以使用 Schema.dynamic() 来引用该类型。

ts
// 提供服务的插件
// getChoices() 返回一个数组,假设为 ['foo', 'bar']
ctx.schema.set('choices', Schema.union(getChoices()))
ts
// 使用服务的插件
export default Schema.object({
  value: Schema.dynamic('choices').description('选择一个值。'),
}).description('配置项')
Input
null
Output
{ }