Skip to content
← Back to rules

typescript/no-implied-eval 正しさ

This rule is turned on by default when type-aware linting is enabled.
💭 This rule requires type information.

何をしていますか

このルールは、eval に似たメソッドの使用を禁止します。

なぜ悪いですか

JavaScript で eval() を使うことを避けることは良い実践とされています。これにはセキュリティ上の懸念やパフォーマンス上の影響があるため、多くのラインタが eval() の使用を禁止することを推奨しています。しかし、文字列を渡してそれを JavaScript コードとして解釈する他の方法も存在し、それらにも同様の懸念があります。

このルールに対して 誤り なコードの例:

ts
setTimeout('alert("Hi!");', 100);

setInterval('alert("Hi!");', 100);

setImmediate('alert("Hi!")');

window.setTimeout("count = 5", 10);

window.setInterval("foo = bar", 10);

const fn = new Function("a", "b", "return a + b");

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

ts
setTimeout(() => {
  alert("Hi!");
}, 100);

setInterval(() => {
  alert("Hi!");
}, 100);

setImmediate(() => {
  alert("Hi!");
});

const fn = (a: number, b: number) => a + b;

使用方法

設定ファイルまたは CLI でこのルールを 有効化 するには、次のようにします:

json
{
  "rules": {
    "typescript/no-implied-eval": "error"
  }
}
bash
oxlint --type-aware --deny typescript/no-implied-eval

参照