@suntech-innovation/option
v1.0.9
Published
A TypeScript implementation of Rust's `Option<T>` type for safe handling of nullable values with functional programming patterns. Eliminates common null/undefined runtime errors by wrapping potentially null values in an `Option` container that must be exp
Readme
@suntech-innovation/option
A TypeScript implementation of Rust's Option<T> type for safe handling of nullable values with functional programming patterns. Eliminates common null/undefined runtime errors by wrapping potentially null values in an Option container that must be explicitly handled.
Features
- Null Safety: Eliminates null/undefined runtime errors through explicit handling
- Rust-inspired API: Familiar patterns with methods like
unwrap(),map(),and_then() - Functional Programming: Support for method chaining and functional composition
- Type-safe JSON Parsing: Schema validation returning Options instead of throwing errors
- Performance Optimized: Minimal overhead, tree-shakeable, no side effects
- Chart/Data Processing: Specialized utilities for safe array operations and data extraction
Installation
npm install @suntech-innovation/optionQuick Start
import { Option, Some, None, OptionUtils } from '@suntech-innovation/option';
// Create Options
const someValue = Some(42);
const noValue = None();
// Safe array operations
const first = OptionUtils.head([1, 2, 3]); // Some(1)
const empty = OptionUtils.head([]); // None()
// Chain operations safely
const result = first
.map(x => x * 2)
.filter(x => x > 0)
.unwrap_or(0); // 2Core API
Option Methods
- State:
is_some(),is_none() - Extraction:
unwrap(),expect(),unwrap_or(),unwrap_or_else() - Transform:
map(),and_then(),filter() - Combine:
or(),or_else(),and(),xor()
OptionUtils
- Array ops:
head(),last(),at() - Safe execution:
tryCatch() - Combinators:
all(),firstSome()
JSON Parser
Type-safe JSON parsing with schema validation:
import { JsonParser } from '@suntech-innovation/option';
const parser = new JsonParser();
const schema = {
name: parser.string,
age: parser.number,
email: parser.optional(parser.string)
};
const result = parser.parseObject(jsonString, schema);
// Returns Option<{name: string, age: number, email?: string}>Documentation
Build
Run ng build option to build the project. The build artifacts will be stored in the dist/ directory.
Publishing
After building your library with ng build option, go to the dist folder cd dist/option and run npm publish.
Running unit tests
Run ng test option to execute the unit tests via Karma.
