24 lines
790 B
TypeScript
24 lines
790 B
TypeScript
import type { ElementNode } from './node/ElementNode.ts';
|
|
import type { TextNode } from './node/TextNode.ts';
|
|
import type { ComponentNode } from './node/ComponentNode.ts';
|
|
import type { FragmentNode } from './node/FragmentNode.ts';
|
|
|
|
export type NodePropsType = {
|
|
[key: string]: any;
|
|
};
|
|
|
|
type Primitive = string | boolean | number;
|
|
type NullablePrimitive = Primitive | null | void;
|
|
|
|
export type ChildNodeType = ElementNode | TextNode | ComponentNode;
|
|
|
|
export type NodeType = ChildNodeType | FragmentNode;
|
|
|
|
export type ChildType = ChildNodeType | Primitive;
|
|
export type NullableChildType = ChildType | ChildNodeType | NullablePrimitive;
|
|
|
|
export type ComponentFunctionType = (
|
|
props: NodePropsType,
|
|
child?: NullableChildType[],
|
|
) => NullableChildType | Promise<NullableChildType>;
|