Type Declarations
Use type for records and discriminated unions.
Record type
type Project = { Name: string; Version: int }
Union type
type BuildStatus =
| Queued
| Running
| Failed of string
| Succeeded
Recursive type
type rec Tree =
| Empty
| Node of (int * Tree list)
Using declared types
let statusMessage status =
match status with
| Queued -> "queued"
| Running -> "running"
| Failed msg -> $"failed:{msg}"
| Succeeded -> "ok"