When looking at the code below:
type A = number | undefined
type B<C extends number> = C
let a: B<A>;
An error will be generated as follows:
Type 'A' does not satisfy the constraint 'number'. Type 'undefined' is not assignable to type 'number'.
Can we assume that A will always be defined, like this:
let a: B<A!>
// or
let a: B<NonNullable<A>>
?