型エラーと実行時エラーを分け、修正相談に必要な情報を整理できる。
この章で学ぶこと
TypeScriptの型は、実行前の道具
多くのWeb開発では、TypeScriptで書いたソースコードをツールでJavaScriptに変換してからブラウザで実行します。型の情報は通常この変換で取り除かれます。実行時に型の宣言が残り、届くデータを自動監視してくれるわけではありません。
開発環境によってはTypeScriptを直接実行するように見えるものもありますが、それが完全な型チェックを意味するとは限りません。型チェックとコードの変換は、別の工程として行う構成もあります。
ビルド成功は、何を保証する?
ビルドは、ソースコードを配布・実行しやすい形に変換したり、まとめたりする工程です。デプロイは、それを利用環境に配置・反映すること。どちらも「業務の答えがすべて正しい」という保証ではありません。
| チェックの段階 | 見つけやすいこと | 別に確認が必要なこと |
|---|---|---|
| 型チェック | 数値と文字の取り違え、項目名の間違い | 計算式が業務の決まりに合うか |
| テスト | 具体例で処理が想定どおりか | テストに含めていない条件 |
| 実行時の検査 | 実際に届いたデータの不正 | 検査ルール自体の抜け |
| 業務の確認 | 承認条件、締め、端数処理の妥当性 | 実装が運用中も守っているか |
エラー文は「期待と実際」を読む
const amount: number = "1200";
// Type 'string' is not assignable to type 'number'.エラーを日本語にすると「文字列を、数値を入れる場所に割り当てられません」。期待はnumber、実際はstringです。ファイル名・行番号・期待する型・実際の型を拾うと、相談が具体的になります。
anyとasは、万能の修正ではない
const response: any = { amount: "確認中" };
const amount: number = response.amount;
// anyを通すと、この不整合を見逃しやすくなる
const value = "1200" as unknown as number;
// asは、文字列を数値に変換していないanyは型チェックを大きく緩めるため、使いすぎると事前に見つけられるミスが減ります。asは型アサーション(型の主張)であり、値の変換でも実行時の検査でもありません。
外部から来る値の型が不明なら、unknownとして受け取り、typeofなどで実際の種類を確かめてから扱う方法があります。unknownは、確認なしで自由に使えるanyとは違います。
相談メモは4点でまとめる
| 伝えること | 例 |
|---|---|
| したいこと | 交通費1200円を申請したい |
| 期待と実際 | 保存されるはずが、保存ボタンでエラーになる |
| 起きる条件 | CSVから読み込んだ金額のときだけ起きる |
| 手がかり | エラー全文、ファイル名・行番号、再現手順 |
会社のデータや画面を共有するときは、社内で認められた方法を使い、個人情報などは必要に応じて伏せます。修正後は正常な金額だけでなく、空欄・0・負数も確認すると、原因に近づけます。
理解を、たしかめよう。
各問の答えを選び、「答え合わせ」を押してください。何度でもやり直せます。
ここまで読めたら、ひと区切り。
理解できたところまでを振り返って、読了を記録しましょう。
記録はこのブラウザに保存されます。