Skip to content
← Back to rules

eslint/no-useless-computed-key 스타일

An auto-fix is available for this rule.

작동 방식

객체 및 클래스에서 불필요한 계산된 속성 키를 사용하지 않도록 제한합니다.

왜 나쁜가요?

다음과 같은 리터럴을 사용해 계산된 속성 키를 사용하는 것은 불필요합니다:

js
const foo = { ["a"]: "b" };

이 코드는 다음과 같이 재작성할 수 있습니다:

js
const foo = { a: "b" };

예시

이 규칙에 대한 틀린 예시:

js
const a = { ["0"]: 0 };
const b = { ["0+1,234"]: 0 };
const c = { [0]: 0 };
const e = { ["x"]() {} };

class Foo {
  ["foo"] = "bar";
  [0]() {}
  static ["foo"] = "bar";
  get ["b"]() {}
  set ["c"](value) {}
}

이 규칙에 대한 올바른 예시:

js
const a = { a: 0 };
const b = { 0: 0 };
const c = { x() {} };
const e = { "0+1,234": 0 };

class Foo {
  foo = "bar";
  0() {}
  a() {}
  static foo = "bar";
}

이 규칙에 대한 추가적인 올바른 예시:

js
const c = {
  __proto__: foo, // 객체의 프로토타입을 정의
  ["__proto__"]: bar, // 이름이 "__proto__"인 속성을 정의
};
class Foo {
  ["constructor"]; // 이름이 "constructor"인 인스턴스 필드
  constructor() {} // 이 클래스의 생성자
  static ["constructor"]; // 이름이 "constructor"인 정적 필드
  static ["prototype"]; // 런타임 오류, `[]` 없이 파싱 오류 발생
}

구성

이 규칙은 다음 속성을 가진 구성 객체를 수용합니다.

enforceForClassMembers

type: boolean

기본값: true

enforceForClassMembers 옵션은 이 규칙이 클래스 멤버(메서드 및 속성)에 적용되는지를 제어합니다.

{ "enforceForClassMembers": false } 옵션을 사용한 경우 이 규칙에 대한 올바른 예시:

js
class SomeClass {
  ["foo"] = "bar";
  [42] = "baz";
  get ["b"]() {}
  set ["c"](value) {}
  static ["foo"] = "bar";
}

사용 방법

구성 파일 또는 명령줄에서 이 규칙을 활성화하려면 다음을 사용하세요:

json
{
  "rules": {
    "no-useless-computed-key": "error"
  }
}
bash
oxlint --deny no-useless-computed-key

참고 자료