ESLint v8.x reached end-of-life on 2024-10-05 and is no longer maintained. Upgrade or consider long-term support options
Versions

no-new-symbol

Disallow new operators with the Symbol object

✅ Recommended

The "extends": "eslint:recommended" property in a configuration file enables this rule

Symbol is not intended to be used with the new operator, but to be called as a function.

var foo = new Symbol("foo");

This throws a TypeError exception.

Rule Details

This rule is aimed at preventing the accidental calling of Symbol with the new operator.

Examples

Examples of incorrect code for this rule:

Open in Playground
/*eslint no-new-symbol: "error"*/
/*eslint-env es6*/

var foo = new Symbol('foo');

Examples of correct code for this rule:

Open in Playground
/*eslint no-new-symbol: "error"*/
/*eslint-env es6*/

var foo = Symbol('foo');

// Ignores shadowed Symbol.
function bar(Symbol) {
    const baz = new Symbol("baz");
}

When Not To Use It

This rule should not be used in ES3/5 environments.

Handled by TypeScript

It is safe to disable this rule when using TypeScript because TypeScript's compiler enforces this check.

Version

This rule was introduced in ESLint v2.0.0-beta.1.

Further Reading

Resources

Change Language