TypeScript Language Patterns
Priority: P0 (CRITICAL)
Implementation Guidelines
- •Type Annotations: Explicit params/returns. Infer locals.
- •Interfaces vs Types:
interfacefor APIs.typefor unions. - •Strict Mode:
strict: true. Null Safety:?.and??. - •Enums: Literal unions or
as const. No runtimeenum. - •Generics: Reusable, type-safe code.
- •Type Guards:
typeof,instanceof, predicates. - •Utility Types:
Partial,Pick,Omit,Record. - •Immutability:
readonlyarrays/objects. Const Assertions:as const,satisfies. - •Template Literals:
on${Capitalize<string>}. - •Discriminated Unions: Literal
kindproperty. - •Advanced: Mapped, Conditional, Indexed types.
- •Access: Default
public. Useprivate/protectedor#private. - •Branded Types:
string & { __brand: 'Id' }.
Anti-Patterns
- •No
any: Useunknown. - •No
Function: Use signature() => void. - •No
enum: Runtime cost. - •No
!: Use narrowing.
Code
typescript
// Branded Type
type UserId = string & { __brand: 'Id' };
// Satisfies (Validate + Infer)
const cfg = { port: 3000 } satisfies Record<string, number>;
// Discriminated Union
type Result<T> = { kind: 'ok'; data: T } | { kind: 'err'; error: Error };
Reference & Examples
For advanced type patterns and utility types: See references/REFERENCE.md.
Related Topics
best-practices | security | tooling