firebase / firebase/firebase-admin-node

FirebaseError type definition as class instead of interface

Ouverte
#403 21 commentaires 49 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
TypeScript
Étoiles
1.7k
Forks
419
Merge moyen
3 j 10 h
PR mergées (30 j)
16

Description

### Description

Currently is `FirebaseError` defined as interface in typescript definition file. So in case of `async/await` we have to handle errors checking e.g. `code` property existence:
```
try {
const decodedIdToken = await this.auth.verifyIdToken(firebaseIdToken);
// some another calls async methods
} catch(err) {
if (err.code === 'auth/argument-error') {
// handle errors - but err is still any type
}
}
```
This is proper way to handle errors but a little bit cleaner way would be:
```
try {
const decodedIdToken = await this.auth.verifyIdToken(firebaseIdToken);
// some another calls async methods
} catch(err) {
if (err instanceof FirebaseError) {
// handle error codes and proper typing here
}
}
```
It is just a small improvement but in this way we have correct type in if statement and also `FirebaseError.code` would be some string literal type with defined all possible error codes.
```
type FirebaseErrorCode = 'auth/argument-error' | 'auth/id-token-expired' | ... ;

class FirebaseError extends Error {
code: FirebaseErrorCode;
}
```
I think this could be really helpful in error handling.

### Target environment

* Operating System version: all
* Firebase SDK version: latest
* Library version: latest
* Firebase Product: common

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.