type TValues<T> = TValue<T> | TValue<T>[] | Extract<T, undefined>
cast <T | undefined> as <T | T[]>
<T | undefined>
<T | T[]>
cast
<T | undefined>as<T | T[]>