exporttypeOptional<T> = T | undefinedexporttypeNullable<T> = T | nullexporttypeSafeReturnType<T> = T extends (...args: any) => infer R ? R : T
exporttypeUnionToIntersection<U> = (U extendsany ? (k: U) =>void : never) extends (k: infer I) => void ? I : never