UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

59 lines (56 loc) 1.3 kB
var _b = 1; var _kb = _b * 1024; var _mb = _kb * 1024; var _gb = _mb * 1024; var _tb = _gb * 1024; var _pb = _tb * 1024; var unitToBytes = Object.create({ PB: _pb, TB: _tb, GB: _gb, MB: _mb, KB: _kb, B: _b }); var re = /^(\d+(?:\.\d+)?)(PB|TB|GB|MB|KB|B)$/; /** * 获取字节值。 * * @param value 值 * @param unit 单位 */ /** * 获取字节值。 * * @param value 值 */ export function bytes(value, unit) { var bytesValue; if (typeof value === 'string' && value.length > 0) { var match = re.exec(value); if (!match) { throw new TypeError("value \u503C\u975E\u6CD5: value=" + JSON.stringify(value)); } var v = parseFloat(match[1]); var u = match[2]; var t = unitToBytes[u]; bytesValue = v * t; } else if (typeof value === 'number' && isFinite(value)) { if (unit != null) { if (typeof unit === 'string') { var _t = unitToBytes[unit]; if (!_t) { throw new TypeError("unit \u503C\u975E\u6CD5: unit=" + JSON.stringify(unit)); } bytesValue = value * _t; } else { throw new TypeError('unit 必须是一个字符串'); } } else { bytesValue = value; } } else { throw new TypeError('value 必须是字符串或数字'); } return bytesValue; }