From 849df82b13ee9b3308a7515dd9edb6dc31662e3a Mon Sep 17 00:00:00 2001 From: Jason Dent Date: Wed, 8 Sep 2021 08:53:16 +0200 Subject: [PATCH] fix: Explicitly look for instance of Error. (#155) --- src/helpers/errors.test.ts | 10 +++++++++- src/helpers/errors.ts | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/helpers/errors.test.ts b/src/helpers/errors.test.ts index 683fb58..44ad50c 100644 --- a/src/helpers/errors.test.ts +++ b/src/helpers/errors.test.ts @@ -1,5 +1,11 @@ import { isError, __testing__ } from './errors'; +class MyError extends Error { + constructor(msg: string) { + super(msg); + } +} + describe('errors', () => { test.each` value | expected @@ -10,7 +16,9 @@ describe('errors', () => { ${{ message: '', name: '' }} | ${true} ${{ message: '', name: '', stack: '' }} | ${true} ${{ message: '', name: '', stack: 5 }} | ${false} - `('isError', ({ value, expected }) => { + ${new Error('test error')} | ${true} + ${new MyError('test error')} | ${true} + `('isError $value', ({ value, expected }) => { expect(isError(value)).toBe(expected); }); diff --git a/src/helpers/errors.ts b/src/helpers/errors.ts index 0e9e07c..097c68e 100644 --- a/src/helpers/errors.ts +++ b/src/helpers/errors.ts @@ -18,6 +18,7 @@ const allowStringOrUndefined: AllowedTypes = { // }; export function isError(e: unknown): e is Error { + if (e instanceof Error) return true; if (!e || typeof e !== 'object') return false; const ex = e; return typeof ex.name == 'string' && typeof ex.message == 'string' && typeof ex.stack in allowStringOrUndefined;