@codelet/core
Version:
mini core
17 lines (16 loc) • 2.34 kB
TypeScript
import type { Loose } from '@daysnap/types';
import type { BehaviorOptionsBase, IntersectionBehavior, OptionBehavior, UnwrapBehaviorsType } from './options';
import type { ComponentInstanceProperties, ComponentLifetimes, ComponentOtherOption, ComponentPropertyOption, DataOption, EnsureNonVoid, InstanceMethods, MethodOption, PropertyOptionToData } from './types';
export type BehaviorOtherOption = Partial<Omit<ComponentOtherOption, 'behaviors' | 'options'>>;
export type BehaviorOptionsInstance<Data extends DataOption = {}, Behavior extends OptionBehavior = OptionBehavior, Method extends MethodOption = {}, Property extends ComponentPropertyOption = {}, PublicBehavior = IntersectionBehavior<Behavior>, PublicProperty extends ComponentPropertyOption = UnwrapBehaviorsType<PublicBehavior, 'Property'> & EnsureNonVoid<Property>, PublicData extends DataOption = UnwrapBehaviorsType<PublicBehavior, 'Data'> & EnsureNonVoid<Data> & PropertyOptionToData<PublicProperty>, PublicMethod extends MethodOption = UnwrapBehaviorsType<PublicBehavior, 'Method'> & EnsureNonVoid<Method>> = ComponentInstanceProperties & PublicMethod & {
data: Loose<PublicData>;
} & InstanceMethods<PublicData>;
export type BehaviorOptions<Data extends DataOption = {}, Behavior extends OptionBehavior = OptionBehavior, Method extends MethodOption = {}, Property extends ComponentPropertyOption = {}> = BehaviorOptionsBase<Data, Behavior, Method, Property> & BehaviorOtherOption & Partial<ComponentLifetimes> & ThisType<BehaviorOptionsInstance<Data, Behavior, Method, Property>>;
export type CreateBehavior<Data extends DataOption = {}, Behavior extends OptionBehavior = OptionBehavior, Method extends MethodOption = {}, Property extends ComponentPropertyOption = {}> = {
__isFragment: string;
} & BehaviorOptionsBase<Data, Behavior, Method, Property> & BehaviorOtherOption & Partial<ComponentLifetimes>;
/**
* 需要注意 createBehavior 实际返回的是字符串
* 因为需要支持嵌套的 behaviors 所以类型返回具体的 options
*/
export declare function createBehavior<Data extends DataOption = {}, Behavior extends OptionBehavior = OptionBehavior, Method extends MethodOption = {}, Property extends ComponentPropertyOption = {}>(options?: BehaviorOptions<Data, Behavior, Method, Property>): CreateBehavior<Data, Behavior, Method, Property>;