I made a few demos to reproduce my problems. Here they are.
Question1: why does type g get 2?
// 1
type f = [never] extends [infer S1, ...infer S2]
? ([S1] extends [never] ? 1 : 2)
: 3
// why 2
type g = [never] extends [infer S1, ...infer S2]
? ([never] extends [S1] ? 1 : 2)
: 3
From my perspective, type f equals g because S1 is never.
Question2: why does type h get 2?
// 1
type i = [never] extends [infer S1]
? ([never] extends [S1] ? 1 : 2)
: 3
// why 2
type h = [never] extends [infer S1, ...infer S2]
? ([never] extends [S1] ? 1 : 2)
: 3
From my perspective, type i equals h because S2 is unused.
Question3: why does type k get never?
// 1
type j = [never] extends [infer S1, ...infer S2]
? (never extends S1 ? 1 : 2)
: 3
// why never ?
type k = [never] extends [infer S1, ...infer S2]
? (S1 extends never ? 1 : 2)
: 3
I couldn't understand even a little. I thought k should be one of 1 2 3 at least.