never型の判定
以下のいずれかを使う
T[] extends never[]
[T] extends [never]
[T] extends [never]
理由は、この辺を参照
T がneverの時の、T extends .. は、問答無用でneverになる
[U] extends ..でdistributeを避ける
ざっくり書くと、
T=neverのとき、T extends neverと書けない
書くと?節、:節に入らず、neverが返ってきてしまう為、条件として使えない
そこで、分配させなくするためにunionでなくしたい
だからT[]とか[T]のように書く