🐈
Type Challengeに入門する
おはようございます。Type Challengeに入門して4日目です。本日は
配列`T`を受け取り、その最初のプロパティの型を返す`First<T>`を実装せよ
という問題です。つまり↓のようになります。
typeChallente.ts
First<['apple', 'banana', 'grape']>
// expected apple
First<[() => 'hello', () => 'bye']>
// expected () => 'hello'
First<[]>>
// expected never
早速実装していきます。今日の問題は簡単そうです。配列の0番目を返せばいいだけです。
First.ts
type First<T extends any[]> = T[0]
これで空配列の場合以外はクリアしました。空配列の場合を考慮する際はConditional Types
を使えばよさそうです。つまり、
空配列の場合はnever型にして、そうでなければT[0]になる。
というふうな記載をすれば良いので、
First.ts
type First<T extends any[]> = T extends Array<never> ? never : T[[0]
このように書けばよさそうです。
今回は別解も多かった気がします。また、別解の方がいい回答だなって思ったので、併せてみていきます。
Discussion