@dongxiang678/typechecker
v1.0.0
Published
A lightweight and flexible type checker for JavaScript, enforce strong template-type checking on functions and classes
Maintainers
Readme
typeChecker
A lightweight, flexible and template-based type checker for JavaScript. Enforce strong type safety on functions and classes without TypeScript.
📦 NPM 包名:
@dongxiang678/typechecker
安装:npm install @dongxiang678/typechecker --save
Features
- ✅ Template-based type constraint (support all JS types: Number/String/Array/Custom Class)
- ✅ Strong type checking for function parameters & return values
- ✅ No implicit type conversion between different types
- ✅ Lightweight (0 dependencies), easy to integrate
- ✅ Compliant with JavaScript ecosystem norms (suitable for large projects)
Installation
npm install @dongxiang678/typechecker --save
# or yarn
yarn add @dongxiang678/typecheckerQuick Start
1. Basic Type Check
const { createCheckerTemplate, enforceReturnType } = require('@dongxiang678/typechecker');
// Create a checker template for String type
const StringChecker = createCheckerTemplate(String);
// Enforce function to return StringChecker
const getString = enforceReturnType(StringChecker, (value) => {
const checker = new StringChecker();
return checker.check(value);
});
// Success
console.log(getString("Hello typeChecker!").getValue()); // "Hello typeChecker!"
// Error: Number type cannot be converted to String
try {
getString(123);
} catch (err) {
console.error(err.message); // "Return value type error: Checker<Number> cannot be converted to Checker<String>"
}2. Custom Class Check
const { createCheckerTemplate, enforceFunctionType } = require('typeChecker');
class User {
constructor(name) {
this.name = name;
}
}
// Create a checker template for User class
const UserChecker = createCheckerTemplate(User);
// Enforce parameter & return type (UserChecker)
const getUser = enforceFunctionType([UserChecker], UserChecker, (checker) => {
return checker.check(new User("张三"));
});
// Success
const userChecker = new UserChecker(new User("李四"));
console.log(getUser(userChecker).getValue().name); // "张三"API
createCheckerTemplate(targetType)
Create a type checker template for specific type.
targetType: Function (e.g.,String,User) or string (e.g., "Number")- Returns: Checker class with type constraint
enforceFunctionType(paramCheckers, returnChecker, fn)
Enforce type checking for function parameters and return value.
enforceReturnType(returnChecker, fn)
Simplified: only enforce return value type.
Why Choose This?
- Solve type-related bugs in pure JavaScript projects
- No TypeScript required, but achieve strong type safety
- Lightweight and modular (works with any project scale)
- Intuitive API, easy to learn and use
License
MIT
