You are given a function `validateEmail(email: string): boolean` that takes an email address as a parameter and returns `true` if the email address is valid, and `false` otherwise. Your task is to implement a new function `filterEmails(emails: string[]): string[]` that takes an array of email addresses and returns a new array containing only the valid email addresses. The function should also throw an exception if any of the email addresses contain special characters or numbers. Write the function `filterEmails(emails: string[]): string[]` to solve this task.

**Function Signature:** `filterEmails(emails: string[]): string[]`

**Input**
- The `emails` parameter is an array of strings representing email addresses.

**Output**
- The function should return a new array containing only the valid email addresses.
- If any of the email addresses contain special characters or numbers, the function should throw an exception.

**Example**
```javascript
filterEmails(["john@gmail.com", "jane@gmail.com", "test123", "test!@#$"]) => ["john@gmail.com", "jane@gmail.com"]
filterEmails(["test1@", "test2@", "test3@"]) => throws an exception
```
f4d8878d-e378-4087-a99b-c31dad5f0609
Σου δίνεται μια συνάρτηση `validateEmail(email: string): boolean` που παίρνει μια διεύθυνση email ως παράμετρο και επιστρέφει `true` εάν η διεύθυνση email είναι έγκυρη ή `false` διαφορετικά. Ο στόχος σου είναι να εφαρμόσεις μια νέα συνάρτηση `filterEmails(emails: string[]): string[]` που θα λαμβάνει μια σειρά από διευθύνσεις email και θα επιστρέφει έναν νέο πίνακα που θα περιέχει μόνο τις έγκυρες διευθύνσεις email. Η συνάρτηση θα πρέπει επίσης να δημιουργήσει μια εξαίρεση εάν κάποια από τις διευθύνσεις email περιέχει ειδικούς χαρακτήρες ή αριθμούς. Γράψε τη συνάρτηση `filterEmails(emails: string[]): string[]` για να λύσεις αυτό το πρόβλημα.

**Υπογραφή συνάρτησης:** `filterEmails(emails: string[]): string[]`


**Είσοδος**
- Η παράμετρος `emails` είναι μια σειρά από συμβολοσειρές που αντιπροσωπεύουν διευθύνσεις email.

**Έξοδος**
- Η συνάρτηση θα πρέπει να επιστρέψει έναν νέο πίνακα που θα περιέχει μόνο τις έγκυρες διευθύνσεις email.
- Εάν κάποια από τις διευθύνσεις email περιέχει ειδικούς χαρακτήρες ή αριθμούς, η συνάρτηση θα πρέπει να δημιουργήσει μια εξαίρεση.

**Παράδειγμα**
```Javascript
filterEmails(["john@gmail.com", "jane@gmail.com", "test123", "test!@#$"]) => ["john@gmail.com", "jane@gmail.com"]
filterEmails(["test1@", "test2@", "test3@"]) => δημιουργεί μια εξαίρεση
```

submitted
{"evolved_from": "You are provided with a code snippet that implements the `getUser()` method in a class. This method takes a string parameter `username` and returns a `User` object based on certain conditions. Your task is to refactor the code, eliminating duplication and adding a new requirement. The refactored code should throw an exception if the `username` parameter contains special characters or numbers. Write a function `refactorCode(username: string): User|null` that handles this refactoring. The function should return a `User` object if any conditions are met, return `null` if no conditions match, and throw an exception if the `username` contains special characters or numbers.\n\n**Function Signature:** `refactorCode(username: string): User|null`\n\n**Input**\n- The `username` parameter is a string representing the username for which the user object needs to be returned.\n\n**Output**\n- The function should return a `User` object if any of the conditions in the code snippet match.\n- If none of the conditions match or if the `username` parameter contains special characters or numbers, the function should return `null`.\n- If the `username` parameter contains special characters or numbers, the function should throw an exception.\n\n**Example**\n```javascript\nrefactorCode(\"john\") => null\nrefactorCode(\"jane\") => instance of User\nrefactorCode(\"123\") => throws an exception\nrefactorCode(\"@#$\") => throws an exception\n```", "kind": "synthetic", "source": "argilla/distilabel-evol-prompt-collective"}