@voxpelli/typed-utils
Version:
My personal (type-enabled) utils / helpers
37 lines (32 loc) • 844 B
JavaScript
/** @import { LiteralTypeOf } from './types/literal-types.d.ts' */
/**
* @param {unknown} value
* @returns {LiteralTypeOf<*>}
*/
function _explainVariable (value) {
if (value === null) return 'null';
if (Array.isArray(value)) return 'array';
return typeof value;
}
/**
* @template T
* @param {T} value
* @returns {LiteralTypeOf<T>}
*/
export function explainVariable (value) {
return /** @type {LiteralTypeOf<T>} */ (_explainVariable(value));
}
/**
* @param {unknown} value
* @returns {value is Error & { code: string }}
*/
export function isErrorWithCode (value) {
return value instanceof Error && 'code' in value;
}
/**
* @param {unknown} value
* @returns {value is Error & { code: string, path: string }}
*/
export function looksLikeAnErrnoException (value) {
return isErrorWithCode(value) && 'path' in value;
}