mostly-dom
Version:
A virtual-dom for TypeScript
19 lines (18 loc) • 1.4 kB
TypeScript
import { HtmlTagNames, SvgTagNames, VNode, VNodeProps } from '../types';
export declare const h: HyperscriptFn;
export declare type VNodeChildren = string | number | null | VNode;
export declare type HyperscriptChildren = VNodeChildren | ArrayLike<VNodeChildren> | ArrayLike<VNodeChildren | ArrayLike<VNodeChildren>> | ArrayLike<ArrayLike<VNodeChildren>>;
export interface ComponentFn {
(props: VNodeProps, children: Array<string | null | VNode>): VNode;
}
export declare type ValidTagNames = HtmlTagNames | SvgTagNames | ComponentFn;
export interface HyperscriptFn {
(tagName: ValidTagNames): VNode;
(tagName: ValidTagNames, props: VNodeProps<any>): VNode;
(tagName: ValidTagNames, children: HyperscriptChildren): VNode;
(tagName: ValidTagNames, props: VNodeProps<any>, children: HyperscriptChildren): VNode;
<T extends Node, Props extends VNodeProps<Element> = VNodeProps<Element>>(tagName: ValidTagNames): VNode<T, Props>;
<T extends Node, Props extends VNodeProps<Element> = VNodeProps<Element>>(tagName: ValidTagNames, props: Props): VNode<T>;
<T extends Node, Props extends VNodeProps<Element> = VNodeProps<Element>>(tagName: ValidTagNames, children: HyperscriptChildren): VNode<T, Props>;
<T extends Node, Props extends VNodeProps<Element> = VNodeProps<Element>>(tagName: ValidTagNames, props: Props, children: HyperscriptChildren): VNode<T, Props>;
}