eslint/func-names スタイル
何をするか
関数式に名前を付けるか、付けないかを制限します。
なぜ問題なのか
関数に名前を付けずに済ませると、エラーが発生した際のスタックトレースに <anonymous> が表示されます。これは、エラーが発生した場所を見つけることを難しくします。明示的に名前を付けることで、読みやすさと一貫性も向上します。
例:設定ファイル
{
"func-names": ["error", "as-needed", { "generators": "never" }]
}例
このルールに違反する誤りのコード例:
/* func-names: ["error", "always"] */
Foo.prototype.bar = function () {};
const cat = { meow: function () {} };
(function () {
/* ... */
})();
export default function () {}このルールに従う正しいコード例:
/* func-names: ["error", "always"] */
Foo.prototype.bar = function bar() {};
const cat = { meow() {} };
(function bar() {
/* ... */
})();
export default function foo() {}as-needed
"as-needed" オプションを使用した場合の誤りのコード例:
/* func-names: ["error", "as-needed"] */
Foo.prototype.bar = function () {};
(function () {
/* ... */
})();
export default function () {}"as-needed" オプションを使用した場合の正しいコード例:
/* func-names: ["error", "as-needed"] */
const bar = function () {};
const cat = { meow: function () {} };
class C {
#bar = function () {};
baz = function () {};
}
quux ??= function () {};
(function bar() {
/* ... */
})();
export default function foo() {}never
"never" オプションを使用した場合の誤りのコード例:
/* func-names: ["error", "never"] */
Foo.prototype.bar = function bar() {};
(function bar() {
/* ... */
})();"never" オプションを使用した場合の正しいコード例:
/* func-names: ["error", "never"] */
Foo.prototype.bar = function () {};
(function () {
/* ... */
})();generators
"always", { "generators": "as-needed" } オプションを使用した場合の誤りのコード例:
/* func-names: ["error", "always", { "generators": "as-needed" }] */
(function* () {
/* ... */
})();"always", { "generators": "as-needed" } オプションを使用した場合の正しいコード例:
/* func-names: ["error", "always", { "generators": "as-needed" }] */
const foo = function* () {};"always", { "generators": "never" } オプションを使用した場合の誤りのコード例:
/* func-names: ["error", "always", { "generators": "never" }] */
const foo = bar(function* baz() {});"always", { "generators": "never" } オプションを使用した場合の正しいコード例:
/* func-names: ["error", "always", { "generators": "never" }] */
const foo = bar(function* () {});"as-needed", { "generators": "never" } オプションを使用した場合の誤りのコード例:
/* func-names: ["error", "as-needed", { "generators": "never" }] */
const foo = bar(function* baz() {});"as-needed", { "generators": "never" } オプションを使用した場合の正しいコード例:
/* func-names: ["error", "as-needed", { "generators": "never" }] */
const foo = bar(function* () {});"never", { "generators": "always" } オプションを使用した場合の誤りのコード例:
/* func-names: ["error", "never", { "generators": "always" }] */
const foo = bar(function* () {});"never", { "generators": "always" } オプションを使用した場合の正しいコード例:
/* func-names: ["error", "never", { "generators": "always" }] */
const foo = bar(function* baz() {});設定
1番目のオプション
type: "always" | "as-needed" | "never"
"always"
すべての関数式に名前が必要です。
"as-needed"
自動的に推論される名前がない場合にのみ名前が必要です。
"never"
関数式に対して名前を許可しません。
2番目のオプション
このオプションは以下のプロパティを持つオブジェクトです:
generators
ジェネレーター関数式の設定。指定しない場合、主な設定が使用されます。
always、as-needed、never のいずれかを受け入れます。
ジェネレーター関数とは、function* 構文で定義された関数です。
function* foobar(i) {
yield i;
yield i + 10;
}使用方法
このルールを有効にするには、設定ファイルまたは CLI で以下のように使用できます:
{
"rules": {
"func-names": "error"
}
}oxlint --deny func-names