Wie verwenden von instanceof in einer switch-Anweisung

Ich verwende benutzerdefinierte Fehler ( es6-Fehler ), die mir erlaubt, um Fehler zu behandeln, basierend auf Ihrer Klasse so:

import { DatabaseEntryNotFoundError, NotAllowedError } from 'customError';

function fooRoute(req, res) {
  doSomethingAsync()
    .then(() => {
      //on resolve /success
      return res.send(200);
    })
    .catch((error) => {
      //on reject /failure
      if (error instanceof DatabaseEntryNotFoundError) {
        return res.send(404);
      } else if (error instanceof NotAllowedError) {
        return res.send(400);
      }
      log('Failed to do something async with an unspecified error: ', error);
      return res.send(500);
    };
}

Nun, ich würde lieber einen Schalter für diese Art von flow, was in etwas wie:

import { DatabaseEntryNotFoundError, NotAllowedError } from 'customError';

function fooRoute(req, res) {
  doSomethingAsync()
    .then(() => {
      //on resolve /success
      return res.send(200);
    })
    .catch((error) => {
      //on reject /failure
      switch (error instanceof) {
        case NotAllowedError:
          return res.send(400);
        case DatabaseEntryNotFoundError:
          return res.send(404);
        default:
          log('Failed to do something async with an unspecified error: ', error);
          return res.send(500);
      }
    });
}

instanceof nicht wie das funktioniert aber. Also dieser ausfällt.

Gibt es eine Möglichkeit zu überprüfen, die eine Instanz Ihrer Klasse in einer switch-Anweisung?

InformationsquelleAutor alextes | 2016-03-31
Schreibe einen Kommentar