Appearance
Core API
extractVariables(expression)
从公式表达式中提取变量名。
extractFunctions(expression)
从公式表达式中提取函数名。
ts
extractFunctions('round(max(price, floor(base * rate)))');
// ['round', 'max', 'floor']validateFormula(expression)
校验公式语法,返回 { valid, errors }。
validateFormulaPolicy(expression, policy)
在语法校验之外,额外限制可用函数、可用变量和表达式长度。
ts
validateFormulaPolicy('round(price * count)', {
allowedFunctions: ['round'],
allowedVariables: ['price', 'count'],
maxExpressionLength: 64,
});calculateFormula(expression, values)
计算公式,返回 { value, errors }。结果限定为有限数字。
ts
calculateFormula('price * count', {
price: 10,
count: 3,
});formatFormulaValue(value, options?)
把计算结果格式化为适合展示的字符串。
ts
formatFormulaValue(237.60000000000002, { precision: 12 });
// '237.6'getFormulaSummary(expression)
一次性返回表达式、变量、合法性和错误。
ts
getFormulaSummary('price * count');createFormulaRunner(expression)
预编译公式,适合表单实时计算。
ts
const runner = createFormulaRunner('price * count');
runner.calculate({ price: 10, count: 3 });calculateFormulaBatch(definitions, values)
按顺序计算一组公式,并把前面公式的结果写回后续公式可用的 values。
ts
calculateFormulaBatch(
[
{ name: 'subtotal', expression: 'price * count' },
{ name: 'tax', expression: 'subtotal * taxRate' },
{ name: 'total', expression: 'subtotal + tax' },
],
{ price: 100, count: 2, taxRate: 0.06 },
);支持的表达式范围
core 计算层使用内置有限 evaluator,不执行任意 JavaScript。当前支持:
- 数字、变量、括号、一元
+和- +、-、*、/、%、^abs、ceil、cos、exp、floor、log、max、min、round、sin、sqrt、tan