export type Getter = () => T; export type MaybeGetter = T | Getter; export type MaybeElementGetter = MaybeGetter; export type MaybeElement = HTMLElement | SVGElement | undefined | null; export type Setter = (value: T) => void; export type Expand = T extends infer U ? { [K in keyof U]: U[K]; } : never; export type WritableProperties = { -readonly [P in keyof T]: T[P]; };