?✨ 最新の JavaScript および React アプリケーションでは、未定義または null 値のプロパティにアクセスしたり、未定義の配列またはオブジェクトのメソッドを呼び出したりすることによって発生するランタイム エラーが発生することがよくあります。これらの問題はユーザー エクスペリエンスを混乱させ、デバッグを悪夢のようなものにする可能性があります。この記事では、一般的な問題を特定し、それらを効果的に軽減するための ESLint 構成を提供します。 ??
?✨ React または React Native プロジェクトでは、TypeScript を使用していないため、安全なコードを書くことを忘れることがあります。これらの安全でないコードは、React Native アプリのクラッシュ、ユーザーのイライラ、メンテナンスの複雑化など、本番環境で多くの問題を引き起こす可能性があります。これらの一般的な問題とその解決方法について詳しく見ていきましょう。 ???
未定義または null のオブジェクトのプロパティにアクセスすると、実行時エラーが発生します:
const user = undefined; console.log(user.name); // ❌ Runtime Error: Cannot read property 'name' of undefined
const name = user?.name;
const name = user ? user.name : 'Default Name';
const user = { name: 'Default Name' };
未定義の配列に対して .map() や .filter() などのメソッドを呼び出すと、エラーがスローされます:
const items = undefined; items.map((item) => console.log(item)); // ❌ Runtime Error: Cannot read property 'map' of undefined
if (Array.isArray(items)) { items.map(item => console.log(item)); }
const items = someValue || []; items.map(item => console.log(item));
const items = possibleItems ?? [];
未定義の可能性がある関数を呼び出そうとしています:
const handler = undefined; handler(); // ❌ Runtime Error: handler is not a function
if (typeof handler === 'function') { handler(); }
const handler = passedHandler || (() => {});
未定義のオブジェクトからプロパティを構造化すると、エラーが発生します:
const user = undefined; console.log(user.name); // ❌ Runtime Error: Cannot read property 'name' of undefined
const name = user?.name;
const name = user ? user.name : 'Default Name';
未定義の配列の要素にアクセスするとエラーが発生します:
const user = { name: 'Default Name' };
const items = undefined; items.map((item) => console.log(item)); // ❌ Runtime Error: Cannot read property 'map' of undefined
if (Array.isArray(items)) { items.map(item => console.log(item)); }
未定義の値またはオブジェクトに対して .map() や .filter() などの配列メソッドを使用する:
const items = someValue || []; items.map(item => console.log(item));
const items = possibleItems ?? [];
const handler = undefined; handler(); // ❌ Runtime Error: handler is not a function
条件を厳密に検証しないと、偽の値に依存するなどのバグが発生する可能性があります。たとえば、ブール値を期待する条件が、未定義や 0 などの他の型を誤って評価する可能性がある場合:
if (typeof handler === 'function') { handler(); }
const handler = passedHandler || (() => {});
const obj = undefined; const { name } = obj; // ❌ Runtime Error: Cannot destructure property 'name' of undefined
const { name = 'Default Name' } = user || {};
開発中にこれらの問題を検出するには、特定のルールを備えた ESLint を活用できます。以下は、安全でない呼び出しにフラグを立てて修正を提案する ESLint 設定です。 ?️??
次のルールを .eslintrc.js または ESLint 構成ファイルに追加します。
const user = undefined; console.log(user.name); // ❌ Runtime Error: Cannot read property 'name' of undefined
これらのルールを有効にするには、必要な ESLint プラグインとパーサーがインストールされていることを確認してください。
const name = user?.name;
次を settings.json に追加します:
const name = user ? user.name : 'Default Name';
ESLint を実行するための npm スクリプトを追加します:
const user = { name: 'Default Name' };
次に、npm run lint を実行して問題を検出します。 ?
上記の ESLint ルールとプラクティスを実装することで、安全でない呼び出しがランタイム エラーになる前に見つけて修正できます。 ??このアプローチにより、JavaScript および React プロジェクトの信頼性と保守性が向上します。 ?⚙️✨
以上がESLint を使用した JavaScript および React プロジェクトでの安全でない呼び出しの回避の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。