extractStatForPropExplained — returns a discriminated union with a reason code on failure. Use when you need to distinguish "unknown prop" from "player DNP" from "league not supported" in UI.
Returns null when the prop type isn't supported by our gamelog source — those legs require manual
grading.
Single-stage dispatch via the per-league adapter registry. Inputs
are normalised on write, so adapter lookups are exact-match against
canonical DfsPropTypeKey strings. Per-league tables live in
src/features/bets/dfs-stat-adapters/{basketball,nfl,mlb}.ts; new
props go in those tables and the canonical enum, never here.
Map a DFS prop type string (verbatim from the slip) to the numeric value to compare against the line.
When to use this vs alternatives:
number | null. Use when you just want the value.extractStatForPropExplained— returns a discriminated union with a reason code on failure. Use when you need to distinguish "unknown prop" from "player DNP" from "league not supported" in UI.Returns null when the prop type isn't supported by our gamelog source — those legs require manual grading.
Single-stage dispatch via the per-league adapter registry. Inputs are normalised on write, so adapter lookups are exact-match against canonical DfsPropTypeKey strings. Per-league tables live in src/features/bets/dfs-stat-adapters/{basketball,nfl,mlb}.ts; new props go in those tables and the canonical enum, never here.