UNPKG

type-checker-handler

Version:

An advanced Type Checker that checks and handles type for the param name on your function.

49 lines (48 loc) 2.45 kB
"use strict"; exports.__esModule = true; exports.typeCheckFunc = exports.typeCheckJs = exports.typeCheck = void 0; /** Checks if the type of the given parameter matches the expected type. @param {object} options - An object that contains the parameter name, the expected type, and an optional error message. @param {string} options.paramName - The name of the parameter to be checked. @param {string} options.expectedType - The expected type of the parameter. @param {string} options.errorMessage - An optional custom error message to be thrown if the type check fails. @throws {TypeError} - If the type of the parameter does not match the expected type. */ function typeCheck(_a) { var paramName = _a.paramName, expectedType = _a.expectedType, errorMessage = _a.errorMessage; var actualType = typeof paramName; var defaultErrorMessage = "Parameter \"".concat(paramName, "\" must be of type \"").concat(expectedType, "\", but got \"").concat(actualType, "\""); if (actualType !== expectedType) { throw new TypeError("".concat(errorMessage || defaultErrorMessage)); } } exports.typeCheck = typeCheck; function typeCheckJs(_a) { var paramName = _a.paramName, expectedType = _a.expectedType, paramType = _a.paramType, errorMessage = _a.errorMessage; var actualType = paramType; var defaultErrorMessage = "Parameter \"".concat(paramName, "\" must be of type \"").concat(expectedType, "\", but got \"").concat(actualType, "\""); if (actualType !== expectedType) { throw new TypeError("".concat(errorMessage || defaultErrorMessage)); } } exports.typeCheckJs = typeCheckJs; function typeCheckFunc(func, expectedTypes) { var paramTypes = func .toString() .match(/\(([^)]*)\)/)[1] .split(","); var numParams = paramTypes.length; if (numParams !== expectedTypes.length) { throw new TypeError("Function requires ".concat(expectedTypes.length, " arguments, but ").concat(numParams, " provided")); } for (var i = 0; i < numParams; i++) { var paramType = paramTypes[i].trim(); var expectedType = expectedTypes[i].trim(); if (paramType !== expectedType) { throw new TypeError("Argument ".concat(i + 1, " must be of type ").concat(expectedType, ", but got ").concat(paramType)); } } } exports.typeCheckFunc = typeCheckFunc; //# sourceMappingURL=typeCheck.js.map