LoginSignup
0
0

More than 1 year has passed since last update.

TypeScriptの勉強中に遭遇した型エラー

プロを目指すTypeScriptを読み勉強していた所、関数のセクションで次のようなサンプルコードがありました。

4.1 function.ts
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));

しかし、この状態だと、
スクリーンショット 2022-11-15 14.24.07.png
return.push(i)部分で赤波線がつき、ホバーすると、何やらiを空配列に入れることができないという主旨の説明が表示されました。

以下が、実際のエラー表示

型 'number' の引数を型 'never' のパラメーターに割り当てることはできません。

never型について調査した

調べていると、以下の記事でnever型について説明されていた。
TypeScriptのNever型とは?
こちらを見ると、値を持たず、どんな値もいれれず、どんな型にも入れれない型だそう。
今回の場合だと、result変数が空配列のため、never型に相当しています。
そのため、result.push(i)で値を追加しようとすると、型違いでエラーが起きてしまったようです。
(参考にしている著書が2022年版のため、このnever型を考慮していないとは考えられないため、私の環境で、必要なパッケージが不足している可能性があります)

エラーの解消方法

結果としては、result変数に明示的に型を追加することでエラーを解消することができた。

4.1 function.ts
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を勉強していきます。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0