export type ElementAttributes = Record & { style?: string | Partial data? : Record } export type SArg = SVGElement | string | ElementAttributes export type HArg = Node | string | ElementAttributes export interface StrictSelect { ( selectors: K, el?: ParentNode ): HTMLElementTagNameMap[K] ( selectors: K, el?: ParentNode ): SVGElementTagNameMap[K] ( selectors: string, el?: ParentNode ): E } export interface H { ( name: K, ...args: HArg[] ): HTMLElementTagNameMap[ K ] ( name: string, ... args: HArg[] ): HTMLElement } export type CreateTag = ( ...args: HArg[] ) => HTMLElementTagNameMap[ K ]