UNPKG

@winged/core

Version:

Morden webapp framekwork made only for ts developers. (UNDER DEVELOPMENT, PLEASE DO NOT USE)

49 lines (48 loc) 1.73 kB
export declare type Override<A, B> = { [K in keyof (A & B)]: K extends keyof A ? (K extends keyof B ? B[K] : A[K]) : (K extends keyof B ? B[K] : never); }; /** like override but can only refining/overwrite existing keys, not adding keys */ export declare type Overwrite<A, B extends A> = { [K in keyof A]: K extends keyof B ? B[K] : A[K]; }; export declare type Subtract<T1, T2> = Pick<T1, Exclude<keyof T1, keyof T2>>; export interface HashMap<T> { [name: string]: T; } export declare type BasicType = string | number | boolean; export declare type OptionalGetters<T> = { [K in keyof T]?: (...args: any[]) => T[K]; }; export declare type Optional<T> = { [K in keyof T]?: T[K]; }; export declare type NonFuncPropNames<T> = { [K in keyof T]: T[K] extends Function ? never : K; }[keyof T]; export declare type NonFuncProps<T> = Pick<T, NonFuncPropNames<T>>; export interface Constructor<T> { new (...args: any[]): T; } export interface IView { insertAfter(prevSiblingNode: Node): void; appendTo(container: HTMLElement): void; } export interface ViewState { [key: string]: BasicType | ViewState[] | ViewState; } export interface StateDependencies { [statePath: string]: StateDependencies; } /** RSD for RenderableStateDescriber */ export interface RSDObject { [key: string]: true | RenderableStateDescriber; } /** RSD for RenderableStateDescriber */ export interface RSDList { [idx: number]: true | RenderableStateDescriber; } export declare type RenderableStateDescriber = RSDObject | RSDList; /** ModificationTree represents which fields were changed, Empty object represents the whole object changed */ export interface ModificationTree { [mField: string]: ModificationTree; }