この解答例はChatGPTによって生成されています,正しいかは自己判断で。
BFE.devでのAI解答例 - TypeScript タイプパズル
35. implement Filter<T, A>
解答例:
type Filter<T extends any[], A> = {
[K in keyof T]: T[K] extends A ? T[K] : never
}[number]
Filter
タイプは、配列 T
と型パラメータ A
を受け取り、配列 T
の要素型が A
に代入可能であるものを配列形式で返します。内部的に、マッピング関数を使用し、T
をループし、その要素が A
に代入可能である場合、その要素を含まない配列を作成します (never
として定義します)。最後に、この配列の要素型から正しい型を抽出するために、穴埋め([])で変数 number
を指定します。
解答例を使用して、引数 A
から別の型を指定することもできます。例えば、any
を使用すると以下のようになります。
type C = Filter<[1,'BFE', 2, any, 'dev'], string> // ['BFE', any, 'dev']