A TypeScript utility library for expressive switch expressions with support for boolean conditions, value matching, and function conditions.
npm install switch-expressions
import { _switch, _s } from 'switch-expressions';
const result = _switch<boolean, string>(true)
.e(false, 'false')
.e(true, 'true')
.d('default');
console.log(result); // 'true'
// Using short name
const shortResult = _s<boolean, string>(true)
.e(false, 'false')
.e(true, 'true')
.d('default');
console.log(shortResult); // 'true'
enum Status {
Active = 'active',
Inactive = 'inactive',
Pending = 'pending'
}
const result = _switch<Status, string>(Status.Active)
.e(Status.Active, 'User is active')
.e(Status.Inactive, 'User is inactive')
.e(Status.Pending, 'User is pending')
.d('Unknown status');
console.log(result); // 'User is active'
interface User {
role: string;
permissions: string[];
}
const isAdmin = (user: User) => user.role === 'admin';
const hasWritePermission = (user: User) => user.permissions.includes('write');
const isGuest = (user: User) => user.role === 'guest';
const user: User = {
role: 'user',
permissions: ['read', 'write']
};
const result = _switch<User, string>(user)
.e(isAdmin, 'Admin Access')
.e(hasWritePermission, 'Write Access')
.e(isGuest, 'Guest Access')
.d('No Access');
console.log(result); // 'Write Access'
interface Product {
type: string;
price: number;
inStock: boolean;
}
const isElectronics = (p: Product) => p.type === 'electronics';
const isExpensive = (p: Product) => p.price > 1000;
const isAvailable = (p: Product) => p.inStock;
const product: Product = {
type: 'electronics',
price: 1200,
inStock: true
};
const result = _switch<Product, string>(product)
.e(isElectronics, 'Electronics Department')
.e(isExpensive, 'Premium Products')
.e(isAvailable, 'In Stock')
.d('Regular Product');
console.log(result); // 'Electronics Department'
_switch<T, V = T>(value: T)
: Creates a switch expression chain_s<T, V = T>(value: T)
: Short name for_switch
expression(condition: boolean | T | Condition<T>, value: V)
: Adds a condition and its corresponding valuee(condition: boolean | T | Condition<T>, value: V)
: Short name forexpression
default(value: V)
: Sets the default value if no conditions matchd(value: V)
: Short name fordefault
Condition<T>
: A function type that takes a value of type T and returns a booleanSwitchChain<T, V>
: The interface for the switch chain methods
MIT