```typescript
export function parseCsvLine(line: string): string[] {
  if (line.trim() === "") return [];

  let result: string[] = [];
  let currentField: string | null = null;
  let isQuoted = false;

  for (let char of line) {
    if (char === '"') {
      if (!isQuoted) {
        isQuoted = true;
        currentField = "";
      } else {
        if (currentField !== null && currentField[currentField.length - 1] === '"') {
          // Close the quoted field
          result.push(currentField.slice(0, -1));
          currentField = null;
          isQuoted = false;
        } else {
          // Add a literal quote to the current field
          if (currentField !== null) {
            currentField += char;
          }
        }
      }
    } else if (char === ',' && !isQuoted) {
      if (currentField !== null) {
        result.push(currentField);
        currentField = null;
      }
    } else if (currentField !== null) {
      currentField += char;
    }
  }

  // Add the last field if there is one
  if (currentField !== null) {
    result.push(currentField);
  }

  return result.map(field => field.trim());
}
```