import type { Five } from "../application/five"; /** * Five 插件 * @template Parameters - 插件参数, 没有参数则为 void * @template Returns - 如果有参数则插件暴露的 api,没有参数则不传 */ type FivePlugin = Parameters extends void ? ((five: Five) => Returns) : ((five: Five, parameters: Parameters) => Returns); /** * 获取插件暴露的 api * @template T - Five 插件 */ type FivePluginInstance> = ReturnType; /** * 获取插件在Five中的初始化结构 * @template T - Five 插件 */ type FivePluginInit> = Parameters[1] extends undefined ? [ Plugin: T, instanceName: null | string ] : [ Plugin: T, instanceName: null | string, parameters: Parameters[1] ]; export { FivePlugin, FivePluginInstance, FivePluginInit, };