TypeScriptの勉強中に遭遇した型エラー
プロを目指すTypeScriptを読み勉強していた所、関数のセクションで次のようなサンプルコードがありました。
function range(min: number, max: number): number[]{
const result = [];
for( let i = min; i <= max; i++){
result.push(i);
}
return result;
}
console.log(range(5,10));
しかし、この状態だと、
return.push(i)
部分で赤波線がつき、ホバーすると、何やらiを空配列に入れることができないという主旨の説明が表示されました。
以下が、実際のエラー表示
型 'number' の引数を型 'never' のパラメーターに割り当てることはできません。
never型について調査した
調べていると、以下の記事でnever型について説明されていた。
TypeScriptのNever型とは?
こちらを見ると、値を持たず、どんな値もいれれず、どんな型にも入れれない型だそう。
今回の場合だと、result
変数が空配列のため、never型に相当しています。
そのため、result.push(i)
で値を追加しようとすると、型違いでエラーが起きてしまったようです。
(参考にしている著書が2022年版のため、このnever型を考慮していないとは考えられないため、私の環境で、必要なパッケージが不足している可能性があります)
エラーの解消方法
結果としては、result
変数に明示的に型を追加することでエラーを解消することができた。
function range(min: number, max: number): number[]{
- const result = [];
+ const result: number[] = [];
for( let i = min; i <= max; i++){
result.push(i);
}
return result;
}
console.log(range(5,10));
他にも、改善方法があれば、コメントなどで教えていただけると嬉しいです。
これからも、typeScriptを勉強していきます。