Quick reference for Option type. Use when user needs to handle nullable values, optional data, or wants to avoid null checks.
Install
npx skillscat add whatiskadudoing/fp-ts-skills/fp-option-ref Install via the SkillsCat registry.
About this skill
This skill provides a quick reference for the Option type, which represents values that may or may not exist. It solves the problem of handling nullable or optional data by offering explicit, composable operations to avoid null checks. Use it when chaining operations on potentially missing values to ensure safe and predictable data handling.
SKILL.md
Option Quick Reference
Option = value that might not exist. Some(value) or None.
Create
import * as O from 'fp-ts/Option'
O.some(5) // Some(5)
O.none // None
O.fromNullable(x) // null/undefined → None, else Some(x)
O.fromPredicate(x > 0)(x) // false → None, true → Some(x)Transform
O.map(fn) // Transform inner value
O.flatMap(fn) // Chain Options (fn returns Option)
O.filter(predicate) // None if predicate falseExtract
O.getOrElse(() => default) // Get value or default
O.toNullable(opt) // Back to T | null
O.toUndefined(opt) // Back to T | undefined
O.match(onNone, onSome) // Pattern matchCommon Patterns
import { pipe } from 'fp-ts/function'
import * as O from 'fp-ts/Option'
// Safe property access
pipe(
O.fromNullable(user),
O.map(u => u.profile),
O.flatMap(p => O.fromNullable(p.avatar)),
O.getOrElse(() => '/default-avatar.png')
)
// Array first element
import * as A from 'fp-ts/Array'
pipe(
users,
A.head, // Option<User>
O.map(u => u.name),
O.getOrElse(() => 'No users')
)vs Nullable
// ❌ Nullable - easy to forget checks
const name = user?.profile?.name ?? 'Guest'
// ✅ Option - explicit, composable
pipe(
O.fromNullable(user),
O.flatMap(u => O.fromNullable(u.profile)),
O.map(p => p.name),
O.getOrElse(() => 'Guest')
)Use Option when you need to chain operations on optional values.