```typescript
/**
 * Divides `a` by `b`, throwing if either is non-finite or if `b` is zero.
 */
export function safeDivide(a: number, b: number): number {
  if (isNaN(b) || !isFinite(b)) {
    throw new Error('Cannot divide by NaN or infinity');
  }
  if (!isFinite(a) || !isFinite(b)) {
    throw new Error('Both operands must be finite numbers');
  }
  if (b === 0) {
    throw new Error('Cannot divide by zero');
  }
  return a / b;
}
```