Playground
Experiment with vowwch contracts in the browser.
import { contract } from "vowwch"
const isPositive = (v: unknown): v is number =>
typeof v === "number" && v > 0
const double = (n: number) => n * 2
const safeDouble = contract(double, {
name: "double",
input: isPositive,
output: isPositive,
mode: "strict",
})
console.log(safeDouble(5))
try {
safeDouble(-1)
} catch (e) {
console.error(e.message)
}Output
Run code to see output