こんにちは。グロトムの堀口夏希です。AIに実装案を出してもらったとき、「読みやすい」「動いた」だけで採用を決めないために、私はまず入力と期待値を整理したいと考えています。今回は小さな練習例で、その確認方法を紹介します。
「未指定」と「0」を分けられているか
例として、再試行回数を設定する処理を考えます。仕様は「未指定なら3回、0なら再試行しない」。AIが次のような式を提案した、と仮定します。
const retries = input || 3;
この式では、inputが0でも結果が3になります。0はJavaScriptで偽と扱われる値だからです。「0を有効な設定として残す」という仕様には合いません。
const retries = input ?? 3;
こちらはnullまたはundefinedのときに3を使うため、0を残せます。ただし、これだけで入力検証が完成するわけではありません。負数や小数を許すか、外部から文字列が来るかは、別途確認が必要です。
AIへの再質問より先に、小さく動かす
この例で確認した結果は、inputが0なら「|| は3、?? は0」、2なら「どちらも2」、nullとundefinedなら「どちらも3」でした。期待値と実際の結果を並べると、差が具体的になります。
本番の機能なら、さらに負数、小数、文字列などをどこで拒否するかを決め、入力境界のテストを追加します。型定義だけに頼らず、外部データを受け取る場所での扱いまで確認したいところです。
AIが書いたコードの説明をAIに求めるだけでなく、自分で反例を一つ作る。 これは短いコードでもできる確認です。
採用前に見る、もう二つのこと
一つはプロジェクトとの整合です。既存のエラー処理、依存ライブラリ、実行環境、チームの規約に合っているかを確認します。もう一つは、検証に使う情報の扱いです。顧客コードや個人情報を、そのまま外部AIへ入力せず、利用ルールに沿って匿名の最小例に置き換えます。
今回の演算子の挙動はTypeScript公式ドキュメントでも確認できます。AIを使うときほど、仕様・公式資料・実行結果を行き来して判断したいですね。
レビューやテストも含めて開発に関わりたい方は、React・TypeScriptの募集をご覧ください。