From a949d974c329173dd59f5371d261c87f0e574d86 Mon Sep 17 00:00:00 2001 From: Oliver Joseph Ash Date: Wed, 16 Oct 2019 11:54:03 +0100 Subject: [PATCH] fix: use `unknown` type for errors --- spec-dtslint/Observable-spec.ts | 8 ++++++++ spec/observables/dom/ajax-spec.ts | 8 ++++++-- src/internal/types.ts | 8 ++++---- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/spec-dtslint/Observable-spec.ts b/spec-dtslint/Observable-spec.ts index ee7c1b1053..aa8790d72c 100644 --- a/spec-dtslint/Observable-spec.ts +++ b/spec-dtslint/Observable-spec.ts @@ -126,4 +126,12 @@ describe('pipe', () => { const customOperator = () => (a: Observable) => a; const o = of('foo').pipe(customOperator()); // $ExpectType Observable }); + + it('should not make assumptions about the error type', () => { + of('foo').subscribe({ + error: error => { + error.name; // $ExpectError + } + }); + }); }); diff --git a/spec/observables/dom/ajax-spec.ts b/spec/observables/dom/ajax-spec.ts index fcd8e1cfeb..4b57fbfd8f 100644 --- a/spec/observables/dom/ajax-spec.ts +++ b/spec/observables/dom/ajax-spec.ts @@ -974,8 +974,12 @@ describe('ajax', () => { ajax(ajaxRequest) .subscribe({ error(err) { - expect(err.name).to.equal('AjaxTimeoutError'); - done(); + if (err instanceof AjaxTimeoutError) { + expect(err.name).to.equal('AjaxTimeoutError'); + done(); + } else { + throw new Error('expected an AjaxTimeoutError'); + } } }); diff --git a/src/internal/types.ts b/src/internal/types.ts index a014cc1634..782dae5c6f 100644 --- a/src/internal/types.ts +++ b/src/internal/types.ts @@ -61,21 +61,21 @@ export type InteropObservable = { [Symbol.observable]: () => Subscribable; export interface NextObserver { closed?: boolean; next: (value: T) => void; - error?: (err: any) => void; + error?: (err: unknown) => void; complete?: () => void; } export interface ErrorObserver { closed?: boolean; next?: (value: T) => void; - error: (err: any) => void; + error: (err: unknown) => void; complete?: () => void; } export interface CompletionObserver { closed?: boolean; next?: (value: T) => void; - error?: (err: any) => void; + error?: (err: unknown) => void; complete: () => void; } @@ -84,7 +84,7 @@ export type PartialObserver = NextObserver | ErrorObserver | Completion export interface Observer { closed?: boolean; next: (value: T) => void; - error: (err: any) => void; + error: (err: unknown) => void; complete: () => void; }