Advanced JSTC Usage
Learn advanced validation patterns, custom type checking, and protection level strategies.
Custom Type Checking with Conditions
Create more complex validation scenarios with conditional logic:
ts
import { JSTypeChecker } from "@briklab/lib/jstc";
// Validate with hardened type checking
const checker = new JSTypeChecker("hardened");
// Check multiple values with different types
const mixedData = [42, "hello", true];
const isValidMixed = checker.for(mixedData).check(["number", "string", "boolean"]);
console.log(isValidMixed); // trueProtection Level Strategies
None Level
Useful for user input that may have loose types:
ts
import JSTC from "@briklab/lib/jstc";
JSTC.setProtectionLevel("none");
// May accept coerced values
const loose = JSTC.for(["123"]).check(["number"]);Hardened Mode
Enforce hardened type checking:
ts
import JSTC from "@briklab/lib/jstc";
JSTC.setProtectionLevel("hardened");
// Only accepts exact type matches
const hardened = JSTC.for([123]).check(["number"]); // true
const hardenedFail = JSTC.for(["123"]).check(["number"]); // falseLive Demo - Advanced Validation
Console
No logs yet.
Nested Type Validation
Validate more complex structures:
ts
import JSTC from "@briklab/lib/jstc";
const complexData = {
id: 42,
name: "John",
active: true,
tags: ["admin", "user"]
};
// Validate individual properties
console.log(JSTC.for([complexData.id]).check(["number"])); // true
console.log(JSTC.for([complexData.tags]).check(["array"])); // trueUsing Multiple Checker Instances
Create isolated checkers for different validation contexts:
ts
import { JSTypeChecker } from "@briklab/lib/jstc";
// Hardened checker for API validation
const apiChecker = new JSTypeChecker("hardened");
// "none" checker for user input
const userChecker = new JSTypeChecker("none");
const apiData = 42;
const userData = "42";
console.log(apiChecker.for([apiData]).check(["number"])); // true
console.log(userChecker.for([userData]).check(["number"])); // may be truePerformance Considerations
For repeated validations, reuse checker instances:
ts
import { JSTypeChecker } from "@briklab/lib/jstc";
const checker = new JSTypeChecker("boundary");
// Reuse for multiple validations (better performance)
const items = [1, 2, 3, 4, 5];
const allValid = items.every(item => checker.for([item]).check(["number"]));
console.log(allValid); // trueNext Steps
- JSTypeChecker API: Complete reference
- Protection Levels: Detailed protection level documentation
- Examples: Real-world use cases