Skip to content
← Back to rules

typescript/no-for-in-array 정확성

This rule is turned on by default when type-aware linting is enabled.
💭 This rule requires type information.

작동 방식

이 규칙은 배열을 for-in 루프로 반복하는 것을 금지합니다.

왜 문제가 되는가?

for-in 루프는 객체의 열거 가능한 속성들을 반복합니다. 이는 배열 인덱스를 포함하지만, 배열 프로토타입이나 배열 인스턴스에 추가된 어떤 열거 가능한 속성도 포함합니다. 배열을 반복할 때 일반적으로 원하는 것은 거의 항상 배열의 값 자체이므로, 이러한 방식은 거의 항상 부적절합니다.

예시

이 규칙에 부적절한 코드 예시:

ts
const arr = [1, 2, 3];

for (const i in arr) {
  console.log(arr[i]);
}

for (const i in arr) {
  console.log(i, arr[i]);
}

이 규칙에 적절한 코드 예시:

ts
const arr = [1, 2, 3];

// 배열 값을 반복하려면 for-of 사용
for (const value of arr) {
  console.log(value);
}

// 인덱스를 사용하는 일반적인 for 루프
for (let i = 0; i < arr.length; i++) {
  console.log(i, arr[i]);
}

// forEach 사용
arr.forEach((value, index) => {
  console.log(index, value);
});

// for-in은 객체에는 문제가 없습니다
const obj = { a: 1, b: 2 };
for (const key in obj) {
  console.log(key, obj[key]);
}

사용 방법

이 규칙을 설정 파일 또는 명령줄 인터페이스에서 활성화하려면 다음을 사용하세요:

json
{
  "rules": {
    "typescript/no-for-in-array": "error"
  }
}
bash
oxlint --type-aware --deny typescript/no-for-in-array

참고 자료