CHAPTER 06 / 08 BUILD & ERRORS

コードが動くまでと、エラーの読み方

型チェック、ビルド、実行時。エラーをひとまとめにせず、起きた場所をつかみます。

◷ 目安 15分確認クイズ 3問未読
この章のゴール

型エラーと実行時エラーを分け、修正相談に必要な情報を整理できる。

この章で学ぶこと
6.1

TypeScriptの型は、実行前の道具

多くのWeb開発では、TypeScriptで書いたソースコードをツールでJavaScriptに変換してからブラウザで実行します。型の情報は通常この変換で取り除かれます。実行時に型の宣言が残り、届くデータを自動監視してくれるわけではありません。

書く・型を確認TypeScript / .ts
変換・まとめるビルドツール
動かすJavaScript / .js

開発環境によってはTypeScriptを直接実行するように見えるものもありますが、それが完全な型チェックを意味するとは限りません。型チェックとコードの変換は、別の工程として行う構成もあります。

6.2

ビルド成功は、何を保証する?

ビルドは、ソースコードを配布・実行しやすい形に変換したり、まとめたりする工程です。デプロイは、それを利用環境に配置・反映すること。どちらも「業務の答えがすべて正しい」という保証ではありません。

チェックの段階見つけやすいこと別に確認が必要なこと
型チェック数値と文字の取り違え、項目名の間違い計算式が業務の決まりに合うか
テスト具体例で処理が想定どおりかテストに含めていない条件
実行時の検査実際に届いたデータの不正検査ルール自体の抜け
業務の確認承認条件、締め、端数処理の妥当性実装が運用中も守っているか
6.3

エラー文は「期待と実際」を読む

型エラーになる例TypeScript
const amount: number = "1200";
// Type 'string' is not assignable to type 'number'.

エラーを日本語にすると「文字列を、数値を入れる場所に割り当てられません」。期待はnumber、実際はstringです。ファイル名・行番号・期待する型・実際の型を拾うと、相談が具体的になります。

6.4

anyとasは、万能の修正ではない

コードを読むTypeScript
const response: any = { amount: "確認中" };
const amount: number = response.amount;
// anyを通すと、この不整合を見逃しやすくなる

const value = "1200" as unknown as number;
// asは、文字列を数値に変換していない

anyは型チェックを大きく緩めるため、使いすぎると事前に見つけられるミスが減ります。asは型アサーション(型の主張)であり、値の変換でも実行時の検査でもありません。

外部から来る値の型が不明なら、unknownとして受け取り、typeofなどで実際の種類を確かめてから扱う方法があります。unknownは、確認なしで自由に使えるanyとは違います。

6.5

相談メモは4点でまとめる

伝えること例
したいこと交通費1200円を申請したい
期待と実際保存されるはずが、保存ボタンでエラーになる
起きる条件CSVから読み込んだ金額のときだけ起きる
手がかりエラー全文、ファイル名・行番号、再現手順

会社のデータや画面を共有するときは、社内で認められた方法を使い、個人情報などは必要に応じて伏せます。修正後は正常な金額だけでなく、空欄・0・負数も確認すると、原因に近づけます。

CHECK YOUR UNDERSTANDING

理解を、たしかめよう。

各問の答えを選び、「答え合わせ」を押してください。何度でもやり直せます。

Q01as numberと書くと、文字列は数値に変換される?
Q02ビルド成功だけでは保証されないことは?
Q03anyを広く使った場合に起きやすいことは?

ここまで読めたら、ひと区切り。

理解できたところまでを振り返って、読了を記録しましょう。

記録はこのブラウザに保存されます。