Skip to content
← Back to rules

eslint/new-cap Style

🚧 An auto-fix is planned for this rule, but not implemented at this time.

작동 방식

이 규칙은 생성자 이름이 대문자로 시작하도록 요구합니다.

왜 문제가 되는가?

자바스크립트의 new 연산자는 특정 유형의 객체의 새 인스턴스를 생성합니다.
그러한 객체 유형은 생성자 함수로 표현됩니다.
생성자 함수는 일반 함수와 동일하므로, 호출 시 new가 사용되는 것이 유일한 구분 요소입니다.
내장 자바스크립트 함수는 생성자로 사용될 함수와 그렇지 않은 함수를 구별하기 위해 대문자로 시작합니다.
많은 스타일 가이드에서 이러한 패턴을 따르도록 권장하며, 이를 통해 어떤 함수가 생성자로 사용되어야 하는지 쉽게 확인할 수 있습니다.

경고: newIsCapExceptionPatterncapIsNewExceptionPattern 옵션은 rust regex 문법을 사용하여 구현되었습니다.
여기에는 많은 자바스크립트 기능이 지원되지 않습니다 (전방 탐색, 후방 탐색 등).

예시

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

js
function foo(arg) {
  return Boolean(arg);
}

기본 설정 { "newIsCap": true }를 사용했을 때의 부적절한 코드 예시:

js
/* new-cap: ["error", { "newIsCap": true }] */

var friend = new person();

기본 설정 { "newIsCap": true }를 사용했을 때의 적절한 코드 예시:

js
/* new-cap: ["error", { "newIsCap": true }] */

var friend = new Person();

{ "newIsCap": false } 옵션을 사용했을 때의 적절한 코드 예시:

js
/* new-cap: ["error", { "newIsCap": false }] */

var friend = new person();

기본 설정 { "capIsNew": true }를 사용했을 때의 부적절한 코드 예시:

js
/* new-cap: ["error", { "capIsNew": true }] */

var colleague = Person();

기본 설정 { "capIsNew": true }를 사용했을 때의 적절한 코드 예시:

js
/* new-cap: ["error", { "capIsNew": true }] */

var colleague = new Person();

{ "capIsNew": false } 옵션을 사용했을 때의 적절한 코드 예시:

js
/* new-cap: ["error", { "capIsNew": false }] */

var colleague = Person();

{ "newIsCapExceptions": ["events"] } 옵션을 사용했을 때의 추가 적절한 코드 예시:

js
/* new-cap: ["error", { "newIsCapExceptions": ["events"] }] */

var events = require("events");

var emitter = new events();

{ "newIsCapExceptionPattern": "^person\\.." } 옵션을 사용했을 때의 추가 적절한 코드 예시:

js
/* new-cap: ["error", { "newIsCapExceptionPattern": "^person\\.." }] */

var friend = new person.acquaintance();

var bestFriend = new person.friend();

{ "newIsCapExceptionPattern": "\\.bar$" } 옵션을 사용했을 때의 추가 적절한 코드 예시:

js
/* new-cap: ["error", { "newIsCapExceptionPattern": "\\.bar$" }] */

var friend = new person.bar();

{ "capIsNewExceptions": ["Person"] } 옵션을 사용했을 때의 추가 적절한 코드 예시:

::: correct

js
/* new-cap: ["error", { "capIsNewExceptions": ["Person"] }] */

function foo(arg) {
  return Person(arg);
}

{ "capIsNewExceptionPattern": "^person\\.." } 옵션을 사용했을 때의 추가 적절한 코드 예시:

js
/* new-cap: ["error", { "capIsNewExceptionPattern": "^person\\.." }] */

var friend = person.Acquaintance();
var bestFriend = person.Friend();

{ "capIsNewExceptionPattern": "\\.Bar$" } 옵션을 사용했을 때의 추가 적절한 코드 예시:

js
/* new-cap: ["error", { "capIsNewExceptionPattern": "\\.Bar$" }] */

foo.Bar();

{ "capIsNewExceptionPattern": "^Foo" } 옵션을 사용했을 때의 추가 적절한 코드 예시:

js
/* new-cap: ["error", { "capIsNewExceptionPattern": "^Foo" }] */

var x = Foo(42);

var y = Foobar(42);

var z = Foo.Bar(42);

기본 설정 { "properties": true }를 사용했을 때의 부적절한 코드 예시:

js
/* new-cap: ["error", { "properties": true }] */

var friend = new person.acquaintance();

기본 설정 { "properties": true }를 사용했을 때의 적절한 코드 예시:

js
/* new-cap: ["error", { "properties": true }] */

var friend = new person.Acquaintance();

{ "properties": false } 옵션을 사용했을 때의 적절한 코드 예시:

js
/* new-cap: ["error", { "properties": false }] */

var friend = new person.acquaintance();

기본 설정 { "newIsCap": true }를 사용했을 때의 부적절한 코드 예시:

js
/* new-cap: ["error", { "newIsCap": true }] */

var friend = new person();

기본 설정 { "newIsCap": true }를 사용했을 때의 적절한 코드 예시:

js
/* new-cap: ["error", { "newIsCap": true }] */

var friend = new Person();

{ "newIsCap": false } 옵션을 사용했을 때의 적절한 코드 예시:

js
/* new-cap: ["error", { "newIsCap": false }] */

var friend = new person();

기본 설정 { "capIsNew": true }를 사용했을 때의 부적절한 코드 예시:

js
/* new-cap: ["error", { "capIsNew": true }] */

var colleague = Person();

기본 설정 { "capIsNew": true }를 사용했을 때의 적절한 코드 예시:

js
/* new-cap: ["error", { "capIsNew": true }] */

var colleague = new Person();

{ "capIsNew": false } 옵션을 사용했을 때의 적절한 코드 예시:

js
/* new-cap: ["error", { "capIsNew": false }] */

var colleague = Person();

{ "newIsCapExceptions": ["events"] } 옵션을 사용했을 때의 추가 적절한 코드 예시:

js
/* new-cap: ["error", { "newIsCapExceptions": ["events"] }] */

var events = require("events");

var emitter = new events();

{ "newIsCapExceptionPattern": "^person\\.." } 옵션을 사용했을 때의 추가 적절한 코드 예시:

js
/* new-cap: ["error", { "newIsCapExceptionPattern": "^person\\.." }] */

var friend = new person.acquaintance();

var bestFriend = new person.friend();

{ "newIsCapExceptionPattern": "\\.bar$" } 옵션을 사용했을 때의 추가 적절한 코드 예시:

js
/* new-cap: ["error", { "newIsCapExceptionPattern": "\\.bar$" }] */

var friend = new person.bar();

{ "capIsNewExceptions": ["Person"] } 옵션을 사용했을 때의 추가 적절한 코드 예시:

::: correct

js
/* new-cap: ["error", { "capIsNewExceptions": ["Person"] }] */

function foo(arg) {
  return Person(arg);
}

{ "capIsNewExceptionPattern": "^person\\.." } 옵션을 사용했을 때의 추가 적절한 코드 예시:

js
/* new-cap: ["error", { "capIsNewExceptionPattern": "^person\\.." }] */

var friend = person.Acquaintance();
var bestFriend = person.Friend();

{ "capIsNewExceptionPattern": "\\.Bar$" } 옵션을 사용했을 때의 추가 적절한 코드 예시:

js
/* new-cap: ["error", { "capIsNewExceptionPattern": "\\.Bar$" }] */

foo.Bar();

{ "capIsNewExceptionPattern": "^Foo" } 옵션을 사용했을 때의 추가 적절한 코드 예시:

js
/* new-cap: ["error", { "capIsNewExceptionPattern": "^Foo" }] */

var x = Foo(42);

var y = Foobar(42);

var z = Foo.Bar(42);

기본 설정 { "properties": true }를 사용했을 때의 부적절한 코드 예시:

js
/* new-cap: ["error", { "properties": true }] */

var friend = new person.acquaintance();

기본 설정 { "properties": true }를 사용했을 때의 적절한 코드 예시:

js
/* new-cap: ["error", { "properties": true }] */

var friend = new person.Acquaintance();

{ "properties": false } 옵션을 사용했을 때의 적절한 코드 예시:

js
/* new-cap: ["error", { "properties": false }] */

var friend = new person.acquaintance();

구성

이 규칙은 다음 속성을 포함하는 구성 객체를 수용합니다:

capIsNew

type: boolean

기본값: true

대문자로 시작하는 모든 함수 이름이 new로 호출되도록 요구합니다.

capIsNewExceptionPattern

type: string

대문자로 시작하는 함수 이름에 대한 예외 항목을 매칭하는 정규 표현식 패턴입니다.

capIsNewExceptions

type: string[]

기본값: []

대문자로 시작하는 함수 이름에 대한 무시할 예외 목록입니다.

newIsCap

type: boolean

기본값: true

모든 생성자 이름이 대문자로 시작하도록 요구합니다. 예: new Person().

newIsCapExceptionPattern

type: string

대문자로 시작하는 생성자 이름에 대한 예외 항목을 매칭하는 정규 표현식 패턴입니다.

newIsCapExceptions

type: string[]

기본값: ["Array", "Boolean", "Date", "Error", "Function", "Number", "Object", "RegExp", "String", "Symbol", "BigInt"]

대문자로 시작하는 생성자 이름에 대한 무시할 예외 목록입니다.

properties

type: boolean

기본값: true

객체 속성에 대해 대문자 표기를 요구합니다 (예: new obj.Method()).

사용 방법

이 규칙을 구성 파일 또는 명령줄에서 활성화하려면 다음을 사용할 수 있습니다:

json
{
  "rules": {
    "new-cap": "error"
  }
}
bash
oxlint --deny new-cap

참고 자료