Skip to content

Instantly share code, notes, and snippets.

@zerkalica
Last active November 16, 2015 19:18
Show Gist options
  • Save zerkalica/93b0f4fdb5f4d6480569 to your computer and use it in GitHub Desktop.
Save zerkalica/93b0f4fdb5f4d6480569 to your computer and use it in GitHub Desktop.
import type {ReducerFn} from '../../../decorators'
import {generateReducer} from '../../../decorators'
class Action {}
class TodoAddMultipleAction extends Action {}
class TodoAddMultipleErrorAction extends Action {}
class TodoAddErrorAction extends Action {}
class TodoCompleteErrorAction extends Action {}
class TodoDestroyErrorAction extends Action {}
class A {}
class B {}
type AnyAction = Object & Action
class Example {
reduce(a: A, action: AnyAction, b: B): A {
switch (action.constructor) {
default:
return a
}
}
addMultiple(a: A, action: TodoAddMultipleAction, b: B): A {
return a
}
addError(
a: A,
{error}: TodoAddMultipleErrorAction
| TodoAddErrorAction
| TodoCompleteErrorAction
| TodoDestroyErrorAction,
b: B
): A {
return a
}
}
import type {ReducerFn} from '../../../decorators'
import {generateReducer} from '../../../decorators'
class Action {}
class TodoAddMultipleAction extends Action {}
class TodoAddMultipleErrorAction extends Action {}
class TodoAddErrorAction extends Action {}
class TodoCompleteErrorAction extends Action {}
class TodoDestroyErrorAction extends Action {}
class A {}
class B {}
type AnyAction = Object & Action
class Example {
reduce(a: A, action: AnyAction, b: B): A {
switch(action.constructor) {
case TodoAddMultipleAction:
return this.addMultiple(a, action, b)
case TodoAddMultipleErrorAction:
case TodoAddErrorAction:
case TodoCompleteErrorAction:
case TodoDestroyErrorAction:
return this.addError(a, action, b)
default:
return a
}
}
addMultiple(a: A, action: TodoAddMultipleAction, b: B): A {
return a
}
addError(
a: A,
{error}: TodoAddMultipleErrorAction
| TodoAddErrorAction
| TodoCompleteErrorAction
| TodoDestroyErrorAction,
b: B
): A {
return a
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment