```typescript
export function thawRow(row: string, steps: number): string {
  // Validate input types and values
  if (typeof row !== 'string' || !row) {
    throw new Error("Input must be a non-empty string");
  }
  if (!/^[#.]+$/.test(row)) {
    throw new Error("Row must only contain '#' or '.' characters");
  }
  if (!Number.isInteger(steps) || steps < 0) {
    throw new Error("Steps must be a non-negative integer");
  }

  // Function to perform one thaw step
  const thaw = (current: string): string => {
    let next = current.split('');
    for (let i = 0; i < next.length; i++) {
      if (
        (i === 0 || next[i - 1] === '.') && 
        (i === next.length - 1 || next[i + 1] === '.')
      ) {
        next[i] = '.';
      }
    }
    return next.join('');
  };

  // Perform the specified number of thaw steps
  for (let i = 0; i < steps; i++) {
    row = thaw(row);
  }

  return row;
}
```