type FNodeChild = FNode | string | number | boolean | null | undefined | FNodeChild[] | (() => FNode); interface FNode { type: string | ((...args: any[]) => unknown); props: Record; children: FNodeChild[]; key?: unknown; } export type { FNode as F, FNodeChild as a };