?✨ 최신 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!