【入門編】 typeof演算子による型ガード – TypeScript実践ガイド

こんにちは。TypeScriptの世界へようこそ!
現場でバリバリとコードを書き散らしていると、たまに忘れてしまいがちですが、TypeScriptの型システムって最初は本当に「宇宙語」に見えますよね。「なんでわざわざこんな面倒なことをしなきゃいけないの?」と投げ出したくなる気持ち、痛いほどよくわかります。

でも、大丈夫。TypeScriptがあなたを苦しめているのは、あなたの書くコードの未来を誰よりも心配してくれているからなんです。

今日は、その中でも「これを知らないと始まらない!」という基本中の基本、`typeof` 演算子を使った「型ガード」について、おしゃべりするように解説していきますね。

—

「何者かわからない」という不安を消し去る魔法

TypeScriptを書いていると、時々「この変数は数字かもしれないし、文字かもしれない」という、正体不明のデータに出くわすことがあります。これを「ユニオン型」と呼びます。

例えば、Webサイトの入力フォームから受け取るデータ。「年齢」を聞いたのに、誰かが間違えて「二十歳」と文字で入力してくるかもしれない。そんなとき、TypeScriptはこう言います。

「君、そのデータが数字なのか文字なのかわからないまま計算させないでよ! エラー出しちゃうぞ!」

そう、TypeScriptは非常に慎重なんです。この不安を解消して、「これは絶対に数字だ!」と確定させる仕組みが、今回紹介する型ガードです。

買い物かごの仕分けをイメージしてみよう

想像してみてください。あなたは今、スーパーのレジ打ちスタッフです。目の前には、スキャン待ちの「買い物かご」が流れてきます。かごの中には、リンゴ(number)も入っていれば、メモ書き(string)も入っているかもしれません。

あなたはレジを打つ前に、こう考えますよね。
「これは食べ物か? それとも単なるメモか? 見て確認してから処理しよう」

これがTypeScriptにおける `typeof` です。

// 買い物かごの中身(数字かもしれないし、文字かもしれない)
let item: number | string = 100;

// typeofを使って、「君は数字かい?」と確認する
if (typeof item === ‘number’) {
// ここではTypeScriptが「あ、この中は絶対に数字だね」と確信してくれる!
console.log(“お値段は ” + (item + 50) + ” 円です。”);
} else {
// ここでは「じゃあ文字だね」と確定する
console.log(“メモの内容: ” + item.toUpperCase());
}

なぜ `typeof` が必要なの?

もし `typeof` を使わずに、いきなり `item + 50` なんて計算をしようとしたらどうなるでしょう?
もし `item` が「リンゴ」という文字だったら、計算結果は「リンゴ50」という謎の文字列になってしまいますよね。TypeScriptはそんな「事故」を未然に防ぐために、あえて厳しい態度を取っているんです。

`typeof` を使ってあげることで、TypeScriptは「お、確認してくれたんだね! じゃあ安全だね」と安心し、その先で思い切りコードを書かせてくれるようになります。

—

つまずきポイント:`typeof` が見分けられるもの

初心者の方がよく迷うのが、「`typeof` って何でも見分けられるの?」という点です。
実は、`typeof` が得意なのは、今回挙げたプリミティブ型(基本の型)だけです。

  • `”number”`(数字)
  • `”string”`(文字)
  • `”boolean”`(真偽値:true/false)
  • `”undefined”`(まだ値がない状態)

これらは `typeof` で簡単に「あなたは誰?」と尋ねることができます。逆に、配列やオブジェクトのような少し複雑なものになると、`typeof` だけでは少し力不足なんです。でも、まずはこの4つをしっかり使いこなせれば、現場のコードの8割は怖くありませんよ。

—

最後に:TypeScriptはあなたの「相棒」です

TypeScriptの型ガードを書いていると、「面倒くさいな」と感じることもあるでしょう。でも、それはあなたが「丁寧な仕事」をしている証拠です。

型ガードをしっかり書くということは、未来の自分や、一緒に働くチームメンバーに対して「ここはこういうデータが来るから、安心して使ってね」という優しい手紙を残しているのと同じなんです。

最初はエラーと友達になるような感覚かもしれませんが、エラーが出てくれたおかげでバグが防げたと気づいたとき、きっとTypeScriptのことが少しだけ好きになれるはずです。

もしコードを書いていて行き詰まったら、いつでも深呼吸して、「今、このデータは何者なんだろう?」と画面に問いかけてみてください。`typeof` という名の虫眼鏡を使えば、必ず答えは見つかります。

あなたのTypeScriptライフが、今日から少しだけ軽やかで楽しいものになりますように!応援しています。

コメント

タイトルとURLをコピーしました