Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. abstract class MaybeState {
  2. public readonly isJust: boolean = false;
  3. public readonly isNone: boolean = false;
  4. }
  5.  
  6. export class Just<TData> extends MaybeState {
  7. public readonly isJust: boolean = true;
  8. public readonly data: TData;
  9.  
  10. constructor(data: TData) {
  11. super();
  12. this.data = data;
  13. }
  14. }
  15.  
  16. export class None extends MaybeState {
  17. public readonly isNone: boolean = true;
  18. }
  19.  
  20. export default class Maybe<TData> {
  21. private state: MaybeState
  22.  
  23. constructor(data?: TData) {
  24. this.state = data ? new Just<TData>(data) : new None();
  25. }
  26.  
  27. public setJust(data: TData) {
  28. this.state = new Just<TData>(data);
  29. }
  30.  
  31. public setNone() {
  32. this.state = new None();
  33. }
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement