TypeScript supports JavaScript's error handling mechanisms with additional type safety:
// Basic try-catch
function parseNumber(value: string): number {
try {
const parsed = parseInt(value);
if (isNaN(parsed)) {
throw new Error(`Invalid number: ${value}`);
}
return parsed;
} catch (error) {
if (error instanceof Error) {
console.error(error.message);
}
throw error;
}
}
// Custom error types
class ValidationError extends Error {
constructor(
message: string,
public field: string,
public value: any
) {
super(message);
this.name = 'ValidationError';
}
}
function validateEmail(email: string): void {
if (!email.includes('@')) {
throw new ValidationError('Invalid email format', 'email', email);
}
}