type NonOptional<T> = { [K in keyof T]-?: Exclude<T[K], undefined>; }
Remove 'optional' on keys as well as 'undefined' on values
Remove 'optional' on keys as well as 'undefined' on values