import type { VmValue } from '@mirascript/mirascript'; import { serialize as s, serializeNumber } from '@mirascript/mirascript/subtle'; /** 序列化 */ export function serialize(value: VmValue): string { return s(value, { serializeNumber: (value: number): string => { if (!Number.isFinite(value) || value === 0) { return serializeNumber(value); } const p1 = value.toString(); const p2 = value.toExponential(); // 还是优先选择默认的形式,除非指数形式更短很多 if (p2.length + 2 < p1.length) { return p2; } else { return p1; } }, }); }