typescript
1type Flatten<A extends any[]> = A extends [infer T, ...infer V] 2 ? [...(T extends any[] ? Flatten<T> : [T]), ...Flatten<V>] 3 : []; 4type flatten = Flatten<[1, 2, [3, 4], [[[5]]]]> // [1, 2, 3, 4, 5]
与えられた配列をフラットにするFlatten という型定義があります。
ここで使われている[infer T, ...infer V]という書き方が気になったのですが、
typescript
1type A = any extends [infer A, infer B] ? A : B
上のような書き方をすると、「名前 'B' が見つかりません。」とエラーになるのに、
typescript
1type A = any extends [infer A, infer B] ? any extends any ? A : B : any
みたいに3項演算子をネストさせたとこで「B」を使うとエラーになりません。
調べても出てこなかったのですが、これはどのような仕様によるものなのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/24 23:09
2021/11/25 00:49