型エラーを潰す

エラーは怒っているのではない

移行の途中で、tsc が何十件もエラーを出すことがあります。ここで手が止まる人が多いのですが、エラーは全部「ここが噛み合っていません」という報告です。読み方さえ決まっていれば、順番に片付くだけの作業です。

上から 1 件ずつ、しか読まない

エラーは連鎖します。1 件直すと 5 件消えることが普通にあります。だから全部読んでから直そうとせず、いちばん上の 1 件だけを見て直し、もう一度走らせます。

読む場所は 3 つです。ファイル名と行番号、TS から始まる番号、そして本文です。

src/utils/count.ts:2:7 - error TS2322: Type 'number' is not assignable to type 'string'.

2 行目の 7 文字目で、string と約束したところに number を入れている、と言っています。

よく出る 4 つを覚える

移行中に出るエラーは、ほとんどこの 4 種類です。

TS7006 Parameter 'x' implicitly has an 'any' type.

引数に型を書き忘れています。書けば消えます。

TS2322 Type 'A' is not assignable to type 'B'.

入れようとした値の型が、入れ先の型と違います。どちらが間違っているのか考えます。

TS2339 Property 'lenght' does not exist on type 'string[]'.

無いプロパティを読んでいます。打ち間違いか、型の指定が違うかのどちらかです。

TS18047 'label' is possibly 'null'.

null かもしれない値を、そのまま使っています。分岐で確かめてから使います。

型のほうを直すこともある

エラーが出たとき、直す先はコードとは限りません。

function workTitle(work: Work): string { return work.url; } // エラー Property 'url' does not exist on type 'Work'.

これは url を読むのが悪いのではなく、Workurl を書き忘れていた、という可能性があります。データの現物を見て、本当にその項目があるなら、Work のほうに url?: string を足すのが正解です。

エラーを黙らせるだけなら as any を付ければ消せます。ですが消えるのはエラーだけで、噛み合っていない事実は残ります。理由が分からないまま消さないでください。

手を動かす

演習では、移行の途中でエラーが 4 件出ている関数を渡します。上から 1 件ずつ読んで、全部消してください。エラーが消えたとき、計算の結果も正しくなっているはずです。

要件

  1. 型エラーを 4 件すべて消す
  2. 平均は四捨五入した整数にする
  3. 表示名は前後の空白を取り除いて使う
  4. 表示名が null のときは 全体 を使う
  5. 戻り値の形は Xは平均N件です のままにする

入出力例

averageCount([1,2,3], "ゆめさく")"ゆめさくは平均2件です" averageCount([2,4], null)"全体は平均3件です" averageCount([1,2], " たなか ")"たなかは平均2件です" averageCount([5], "さとう")"さとうは平均5件です" averageCount([1,2,3,4], "ゆめさく")"ゆめさくは平均3件です"

ヒント

生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア
編集 LuaGate編集部
main.ts
main.ts
学習モード

メモ

型エラーを潰す

⌘S で保存