diff --git a/src/index.test.ts b/src/index.test.ts index a4f247d..68882a9 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -2,16 +2,19 @@ import { Failure, fold, Initialized, Pending, Success } from './index'; test('Initialized', () => { expect(new Initialized()).toBeInstanceOf(Initialized); + expect(new Initialized().kind).toEqual('Initialized'); }); test('Pending', () => { expect(new Pending()).toBeInstanceOf(Pending); + expect(new Pending().kind).toEqual('Pending'); }); test('Success', () => { const data = { apple: 'sauce' }; const state = new Success(data); expect(state).toBeInstanceOf(Success); + expect(state.kind).toEqual('Success'); expect(state.data).toEqual(data); }); @@ -23,6 +26,7 @@ test('Failure', () => { const error = 500; const state = new Failure(error); expect(state).toBeInstanceOf(Failure); + expect(state.kind).toEqual('Failure'); expect(state.error).toEqual(error); }); diff --git a/src/index.ts b/src/index.ts index 57c73f6..b3a30e0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,10 +1,16 @@ export type RemoteData = Initialized | Pending | Success | Failure; -export class Initialized {} +export class Initialized { + private kind = 'Initialized'; +} -export class Pending {} +export class Pending { + private kind = 'Pending'; +} export class Success { + private kind = 'Success'; + constructor(public data: D) { if (data === null || data === undefined) { fail('Parameter "data" is required'); @@ -13,6 +19,8 @@ export class Success { } export class Failure { + private kind = 'Failure'; + constructor(public error: E) { if (error === null || error === undefined) { fail('Parameter "error" is required');