typescript/no-implied-eval 正しさ
何をしていますか
このルールは、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