TypeScript Conditional Types for API Responses
typescript
dev.to
Quick pattern I keep using for API responses that can be either successful or error states: type ApiResponseT> = | { success: true; data: T } | { success: false; error: string }; // Helper to narrow the type function isSuccessT>(response: ApiResponseT>): response is { success: true; data: T } { return response.success === true; } // Usage const result: ApiResponseUser> = await fetchUser(); if (isSuccess(result)) { // TypeScript knows result.data exists here console.log(result.dat