@action-land/component
Version:
Basic interface for a component
17 lines (16 loc) • 748 B
TypeScript
import { Component } from '@action-land/component';
declare type anyComponent = Component<any, any, any, any>;
declare type NState<T> = T & {
'@@forward': {
keys: Array<string>;
};
};
declare type ComponentSpec = {
[key: string]: anyComponent;
};
declare type ComponentState<T extends anyComponent> = T extends Component<infer S, unknown, unknown[], unknown> ? S : unknown;
declare type ChildStateSpec<T extends ComponentSpec> = {
[k in keyof T]: ComponentState<T[k]>;
};
export declare const AutoForward: <T extends ComponentSpec>(spec: T) => <State extends ChildStateSpec<T>, Params, Init extends any[], VNode>(component: Component<State, Params, Init, VNode>) => Component<NState<State>, Params, Init, VNode>;
export {};