TypeScript Compiler API Conditional types Index types Nullable types and optional parameters/properties Runtime type checking in TypeScript Type guards