typescript-advanced-patterns
Installation
SKILL.md
TypeScript Advanced Patterns
Discriminated Unions
Model state machines and mutually exclusive variants with a shared literal discriminant:
type Result<T, E = Error> = { success: true; data: T } | { success: false; error: E };
function handle(result: Result<User>) {
if (result.success) {
console.log(result.data.name); // narrowed to { data: User }
} else {
console.error(result.error); // narrowed to { error: Error }
}
}
Prefer discriminated unions over optional fields when states are mutually exclusive.