import { type EffectScope } from "@vue/reactivity"; import "miniprogram-api-typings"; import { type PropType } from "./shared"; export type ComponentInstance = WechatMiniprogram.Component.Instance; $context: ComponentContext; }, false>; export type ComponentOptions = WechatMiniprogram.Component.Options; type ComponentPropertiesValue = T extends { type: null; } ? { type: null; optionalTypes?: Array>; value?: any; observer?: (newVal: any, oldVal: any) => void; } : T extends { type: PropType; optionalTypes?: Array>; } ? { type: PropType; optionalTypes?: Array>; value?: U | (T extends { optionalTypes: (infer O)[]; } ? ComponentPropsValue : never); observer?: (newVal: U | (T extends { optionalTypes: (infer O)[]; } ? ComponentPropsValue : never), oldVal: U | (T extends { optionalTypes: (infer O)[]; } ? ComponentPropsValue : never)) => void; } : T extends { type: PropType; } ? { type: PropType; value?: U; observer?: (newVal: U, oldVal: U) => void; } : T extends null ? null : T extends PropType ? PropType : undefined; export type ComponentProperties = { [K in keyof T]?: ComponentPropertiesValue; }; export type ComponentHook = (this: ComponentInstance, props: TComponentProps, context: TComponentContext) => Record | void; type ComponentPropsValue = T extends { type: PropType; optionalTypes?: Array>; } ? U | (T extends { optionalTypes: (infer O)[]; } ? ComponentPropsValue : never) : T extends { type: PropType; } ? U : T extends PropType ? U : T extends null ? any : undefined; export type ComponentProps = { [K in keyof T]?: ComponentPropsValue; }; type ComponentContextEmit = (event: K, ...args: E[K] extends (...args: infer P) => any ? P : never) => void; export type ComponentContext = { emit: ComponentContextEmit; }; /** * 创建组件并关联生命周期函数 * @param hook - Hook 函数或包含 setup 的对象 */ export declare const defineComponent: , TEmits extends object = {}>(hook?: ComponentHook, ComponentContext> | (ComponentOptions & { properties?: TProperties; emits?: TEmits; setup?: ComponentHook, ComponentContext>; })) => string; export {};