typescript/no-implied-eval 正确性
它做了什么
此规则禁止使用类似 eval 的方法。
为什么这是个问题?
在 JavaScript 中避免使用 eval() 被认为是一种良好实践。这样做会带来安全性和性能方面的隐患,这也是许多 linter 推荐禁用 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