Skip to content
← Back to rules

eslint/new-cap スタイル

An auto-fix is available for this rule.

何を行うか

このルールは、コンストラクタ名が大文字から始まる必要があることを要求します。

なぜ悪いのか

JavaScript の new 演算子は、特定の型のオブジェクトの新しいインスタンスを作成します。 その型のオブジェクトは、コンストラクタ関数によって表されます。 コンストラクタ関数は通常の関数にすぎないため、呼び出し時に new が使用されていることが唯一の特徴です。 ネイティブの JavaScript 関数は、コンストラクタとして使用する関数とそうでない関数を区別するために、大文字から始まります。 多くのスタイルガイドでは、どの関数がコンストラクタとして使用されるかをより簡単に判別できるように、このパターンを推奨しています。

警告: オプション newIsCapExceptionPattern および capIsNewExceptionPatternrust regex 構文 で実装されています。多くの JavaScript 機能がサポートされていません(先読み、後読みなど)。

このルールに対して 不正な コードの例:

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"] } での追加の 正しい コードの例:

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

型: boolean

デフォルト: true

大文字で始まる名前のすべての関数が new で呼び出されることを要求する場合に true

capIsNewExceptionPattern

型: string

大文字で始まる名前の関数に対する例外をマッチさせる正規表現パターン。

capIsNewExceptions

型: string[]

デフォルト: []

大文字で始まる名前の関数に対する無視対象の例外。

newIsCap

型: boolean

デフォルト: true

すべてのコンストラクタ名が大文字から始まる必要があることを要求する場合に true(例:new Person())。

newIsCapExceptionPattern

型: string

大文字で始まる名前のコンストラクタに対する例外をマッチさせる正規表現パターン。

newIsCapExceptions

型: string[]

デフォルト: ["Array", "Boolean", "Date", "Error", "Function", "Number", "Object", "RegExp", "String", "Symbol", "BigInt"]

大文字で始まる名前のコンストラクタに対する無視対象の例外。

properties

型: boolean

デフォルト: true

オブジェクトのプロパティについても大文字化を要求する場合に true(例:new obj.Method())。

使用方法

このルールを設定ファイルまたは CLI で 有効化 するには、以下のように使用できます:

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

参照