Safe Math Eval(报价/分成表达式)
灵感:工具箱 math-expr。用 mathjs.evaluate 替代 eval,计算报价、分成等表达式。
硬约束
- 禁止
eval/new Function跑用户输入。 - 仅允许数学表达式;限制 scope(勿注入业务对象)。
- 错误要捕获并提示,不抛穿页面。
- 结果建议
toFixed按业务位(金额常 2 位)。
核心
import { evaluate } from 'mathjs';
export function safeEval(expr: string, scope: Record<string, number> = {}) {
return evaluate(expr, scope);
}
// 例:safeEval('price * rate', { price: 10000, rate: 0.06 })
工具箱映射
- 能力:
math-expr - 依赖:
mathjs
附加
- 说明见 README.md
- 参考见 reference.md