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
JavaScript
;
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