firebase / firebase/firebase-admin-node

FirebaseError type definition as class instead of interface

Aperta
#403 21 commenti 49 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
TypeScript
Stelle
1.7k
Fork
419
Merge medio
3g 10h
PR unite (30g)
16

Descrizione

### 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

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.