@produck/type-error
v0.1.5
Published
A helper utility to throw type errors using the Produck TypeError template
Downloads
218
Readme
@produck/type-error
A utility library for generating and throwing TypeError messages following the Produck TypeError template format.
Installation
npm install @produck/type-errorAPI
ErrorMessage(role: string, expected: string): string
Generates a formatted error message for type validation failures.
Parameters:
role- Description of the parameter role (e.g.,"args[0]","options.name")expected- Expected type or value description (e.g.,"string","function")
Returns: Formatted error message string
Throws: TypeError if role or expected is not a string
Example:
import { ErrorMessage } from "@produck/type-error";
const message = ErrorMessage("args[0]", "string");
// Returns: Invalid "args[0]", one "string" expected.ThrowTypeError(role: string, expected: string): never
Throws a TypeError with a formatted message.
Parameters:
role- Description of the parameter roleexpected- Expected type or value description
Throws: TypeError always with formatted message
Example:
import { ThrowTypeError } from "@produck/type-error";
function myFunction(value) {
if (typeof value !== "string") {
ThrowTypeError("args[0]", "string");
}
}AssertionChecker(validate: Validate, defaultExpected: string): Assert
Creates a reusable assertion function with a custom validation function.
Parameters:
validate- Function that returnstrueif value is valid,falseotherwisedefaultExpected- Default "expected" message used in error messages
Returns: An assertion function (value: unknown, role: string, expected?: string) => undefined
Throws: TypeError if validate is not a function or defaultExpected is not
a string
Example:
import { AssertionChecker } from "@produck/type-error";
const assertString = AssertionChecker(
(value) => typeof value === "string",
"string",
);
// Use the assertion
try {
assertString(42, "args[0]");
} catch (error) {
console.error(error.message);
// TypeError: Invalid "args[0]", one "string" expected.
}
// With custom expected message
try {
assertString(null, "args[0]", "non-null string");
} catch (error) {
console.error(error.message);
// TypeError: Invalid "args[0]", one "non-null string" expected.
}Usage Patterns
Basic Validation
import { ThrowTypeError } from "@produck/type-error";
function processData(data) {
if (typeof data !== "object" || data === null) {
ThrowTypeError("args[0]", "object");
}
// ...
}Creating Custom Validators
import { AssertionChecker } from "@produck/type-error";
const assertNumber = AssertionChecker((v) => typeof v === "number", "number");
const assertArray = AssertionChecker((v) => Array.isArray(v), "array");
function calculateSum(numbers) {
assertArray(numbers, "args[0]");
return numbers.reduce((sum, n) => {
assertNumber(n, "array element");
return sum + n;
});
}License
MIT
Author
ChaosLee
