「何もない」状態を正しく理解して、エラーを未然に防ごう
`null`とは、プログラミングにおいて「意図的に値が存在しない」ことを示す特別な値です。 変数は存在するけれど、中身が「空っぽ」であることを明示するために使われます。
お店の棚を想像してみてください。
これが `null` です。棚(変数)は確かにそこにありますが、「商品(値)は意図的に置いていません」と示している状態です。
これは `0` です。「0円」という価格が付けられた商品(値)が、確かに存在しています。これは「空っぽ」ではありません。
`null` と `0` を混同すると、予期せぬバグの原因になります。この2つは全く異なるものです。
let selectedItem: string | null = null; console.log(selectedItem); // null // 意味:まだ何もアイテムが選択されていない
let score: number = 0; console.log(score); // 0 // 意味:スコアが0点である
`null` とよく似たものに `undefined` があります。どちらも「値がない」ことを示しますが、ニュアンスが異なります。
// ターゲットがいないことを明示 let target = null;
// 変数を宣言しただけ let target; console.log(target); // undefined
ゲーム開発では、「何もない」状態を管理することが頻繁にあります。
// null-practice.ts // プレイヤーがクリックした敵キャラクターを格納する変数 // 最初は何もクリックされていないので null で初期化 let selectedEnemy: string | null = null; // 敵をクリックした時の処理(シミュレーション) function clickEnemy(enemyName: string) { selectedEnemy = enemyName; console.log(`${selectedEnemy} を選択しました。`); } // 何もない場所をクリックした時の処理(シミュレーション) function clickEmptyArea() { selectedEnemy = null; // 選択を解除 console.log("敵の選択を解除しました。"); } // 攻撃ボタンを押した時の処理 function attack() { if (selectedEnemy !== null) { // selectedEnemy が null でない場合のみ攻撃 console.log(`${selectedEnemy} に攻撃!`); } else { // selectedEnemy が null の場合 console.log("攻撃する敵が選択されていません。"); } } // --- 実行シミュレーション --- attack(); // "攻撃する敵が選択されていません。" clickEnemy("スライム"); // "スライム を選択しました。" attack(); // "スライム に攻撃!" clickEmptyArea(); // "敵の選択を解除しました。" attack(); // "攻撃する敵が選択されていません。"
この章では、`null` の概念と、それが `0` や `undefined` とどう違うのかを学びました。
基本的なデータ型と `null` を理解したところで、いよいよPhaserを使ったプロジェクトの準備に入ります。 次の章では、開発環境を整え、最初のPhaserプロジェクトをセットアップする方法を学びます。
プログラミングの基礎を学習したら、次はPhaserJSの学習に進みましょう: