simplex-lang
Version:
SimplEx - simple expression language
40 lines • 1.12 kB
JavaScript
export * from './cast.js';
export * from './ensure.js';
export * from './guards.js';
// eslint-disable-next-line @typescript-eslint/unbound-method
const toString = Object.prototype.toString;
/**
* Converts instances of Number, String and Boolean to primitives
*/
export function unbox(val) {
if (typeof val !== 'object' || val === null)
return val;
const objConstructor = val.constructor;
if (objConstructor === Number ||
objConstructor === String ||
objConstructor === Boolean) {
return val.valueOf();
}
return val;
}
/**
* Returns more specific type of a value
*/
export function typeOf(val) {
const type = typeof val;
if (type === 'number') {
if (Number.isFinite(val))
return 'number';
else if (val === Number.NEGATIVE_INFINITY)
return '-Infinity';
else if (val === Number.POSITIVE_INFINITY)
return 'Infinity';
else
return 'NaN';
}
if (type === 'object') {
return toString.call(val).slice(8, -1);
}
return type;
}
//# sourceMappingURL=index.js.map