交差型のニュートラル要素は何ですか?

2
2022.01.13

共用体型の場合 、never はニュートラル要素、つまり never | T = Tです。

もう 1 つの方法は 、T=[T_1, ..., T_n]型の組の場合、共用体型 T_1 | ... | T_nT[number]によって与えられるということです。空の組 []の場合 、[][number] は空の型セットの共用体型である never を生成します。

交差タイプのニュートラル要素は、どのタイプですか?つまり、任意のタイプ のN に対して N & T = T が生成され、空のセットの交差タイプはどの組み込み型 T ですか?

回答
2
2022.01.13

ちょうどそれを自分で考え出しました:

共用体型の場合 、type NeutralUnion<T> = never | TTと同じです。

交差タイプの場合 、type NeutralIntersection<T> = unknown & TTと同じです。

したがって 、type UnionOfTupleElements<T> = T[number]の構築と同様に、次のビルドを行うことができます。

type IntersectionOfTupleElements<T extends unknown[]> = 
  T extends [infer U, ...infer V] 
    ? U & IntersectionOfTupleElements<V> 
    : unknown;

それは生み出す:

IntersectionOfTupleElements<[]> = unknown
IntersectionOfTupleElements<[T]> = T
IntersectionOfTupleElements<[T1, T2]> = T1 & T2