Skip to content
← Back to rules

eslint/curly 스타일

An auto-fix is available for this rule.

작동 방식

이 규칙은 모든 제어문(if, else, for, while, do, with)에 중괄호 {} 사용을 강제합니다.
모든 블록이 중괄호로 둘러싸여 있음을 보장하여 코드의 명확성과 유지보수성을 향상시킵니다.

왜 나쁜가요?

중괄호를 생략하면 코드의 가독성이 떨어지고, 특히 깊이 중첩되거나 들여쓰기된 코드에서 오류 발생 가능성 증가합니다.
나중에 추가 문장을 작성할 때 적절히 중괄호로 감싸지 않으면 버그가 발생할 수 있습니다.
일관된 중괄호 사용은 코드를 더 안전하고 수정하기 쉽게 만듭니다.

예시

"all" (기본값)

이 규칙에 대한 잘못된 예시:

js
/* curly: ["error", "all"] */

if (foo) foo++;
while (bar) bar--;
do foo();
while (bar);

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

js
/* curly: ["error", "all"] */

if (foo) {
  foo++;
}
while (bar) {
  bar--;
}
do {
  foo();
} while (bar);

"multi"

"multi" 옵션을 사용한 이 규칙에 대한 잘못된 예시:

js
/* curly: ["error", "multi"] */

if (foo) foo();
else {
  bar();
  baz();
}

"multi" 옵션을 사용한 이 규칙에 대한 올바른 예시:

js
/* curly: ["error", "multi"] */

if (foo) foo();
else bar();

"multi-line"

"multi-line" 옵션을 사용한 이 규칙에 대한 잘못된 예시:

js
/* curly: ["error", "multi-line"] */

if (foo) foo();
else bar();

while (foo) foo();

"multi-line" 옵션을 사용한 이 규칙에 대한 올바른 예시:

js
/* curly: ["error", "multi-line"] */

if (foo) foo();
else bar();

while (foo) foo();

while (true) {
  doSomething();
  doSomethingElse();
}

"multi-or-nest"

"multi-or-nest" 옵션을 사용한 이 규칙에 대한 잘못된 예시:

js
/* curly: ["error", "multi-or-nest"] */

if (foo) if (bar) bar();

while (foo) while (bar) bar();

"multi-or-nest" 옵션을 사용한 이 규칙에 대한 올바른 예시:

js
/* curly: ["error", "multi-or-nest"] */

if (foo) {
  if (bar) bar();
}

while (foo) {
  while (bar) bar();
}

"consistent"

활성화 시 "consistent"if-else 체인 내에서 중괄호 사용을 일관되게 적용합니다.
체인의 한 가지 브랜치에서 중괄호를 사용하면, 다른 모든 브랜치도 중괄호를 사용해야 하며, 첫 번째 옵션에 따라 반드시 필요하지 않은 경우에도 마찬가지입니다.

"multi""consistent"를 함께 사용한 잘못된 예시:

js
/* curly: ["error", "multi", "consistent"] */

if (foo) {
  bar();
  baz();
} else qux();

if (foo) bar();
else {
  baz();
  qux();
}

"multi""consistent"를 함께 사용한 올바른 예시:

js
/* curly: ["error", "multi", "consistent"] */

if (foo) {
  bar();
  baz();
} else {
  qux();
}

if (foo) {
  bar();
} else {
  baz();
  qux();
}

"multi-line""consistent"를 함께 사용한 잘못된 예시:

js
/* curly: ["error", "multi-line", "consistent"] */

if (foo) {
  bar();
} else baz();

"multi-line""consistent"를 함께 사용한 올바른 예시:

js
/* curly: ["error", "multi-line", "consistent"] */

if (foo) {
  bar();
} else {
  baz();
}

"multi-or-nest""consistent"를 함께 사용한 잘못된 예시:

js
/* curly: ["error", "multi-or-nest", "consistent"] */

if (foo) {
  if (bar) baz();
} else qux();

"multi-or-nest""consistent"를 함께 사용한 올바른 예시:

js
/* curly: ["error", "multi-or-nest", "consistent"] */

if (foo) {
  if (bar) baz();
} else {
  qux();
}

구성 방법

curly 규칙의 구성은 하나 또는 두 개의 요소로 이루어진 배열로 지정됩니다.

예시:

  • ["all"] - 모든 경우에 중괄호 필수 (기본값)
  • ["multi"] - 다중 문장 블록에만 중괄호 필수
  • ["multi-line"] - 다중 줄 블록에만 중괄호 필수
  • ["multi-or-nest"] - 중첩되거나 다중 줄 블록에만 중괄호 필수
  • ["multi", "consistent"] - 다중 모드 + if-else 체인 내에서 일관된 중괄호 사용

첫 번째 옵션

타입: "all" | "multi" | "multi-line" | "multi-or-nest"

curly 규칙에 대한 강제 유형입니다.

"all"

모든 경우에 중괄호를 요구합니다 (기본값)

"multi"

블록에 여러 문장이 있을 때만 중괄호를 요구합니다

"multi-line"

블록이 여러 줄에 걸쳐 있을 때 중괄호를 요구합니다

"multi-or-nest"

블록이 중첩되거나 여러 줄에 걸쳐 있을 때 중괄호를 요구합니다

두 번째 옵션

사용 방법

설정 파일이나 CLI를 통해 이 규칙을 활성화하려면 다음을 사용할 수 있습니다:

json
{
  "rules": {
    "curly": "error"
  }
}
bash
oxlint --deny curly

참고 자료