Advertisement
Guest User

Untitled

a guest
Jan 21st, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.32 KB | None | 0 0
  1. interface ApiUser {
  2. firstname: string
  3. lastname: string
  4. age: number
  5. isSuperUser: boolean
  6. authorities: string[]
  7. createdOn: Date
  8. lastModifiedOn: Date
  9. }
  10.  
  11. class User {
  12. public constructor(
  13. protected firstname: string,
  14. protected lastname: string,
  15. protected age: number) {}
  16.  
  17. private (api: ApiUser) {
  18. if (!api.isSuperUser) {
  19. return new User(
  20. api.firstname,
  21. api.lastname,
  22. api.age
  23. )
  24. } else {
  25. return SuperUser.of(new User(User));
  26. }
  27. }
  28.  
  29. displayInfos() {
  30. console.info(`${this.firstname} - ${this.lastname} - ${this.age}`)
  31. }
  32. }
  33.  
  34. class SuperUser extends User {
  35. private constructor(firstname: string, lastname: string, age: number, private authorities: string[]) {
  36. super(firstname, lastname, age);
  37. }
  38.  
  39. public static of(api: ApiUser) {
  40. if (!api.isSuperUser) {
  41. throw new Error('Cannot instantiate if not super user')
  42. } else {
  43. return new SuperUser(
  44. api.firstname,
  45. api.lastname,
  46. api.age,
  47. api.authorities
  48. )
  49. }
  50. }
  51. displayInfos() {
  52. console.info(`${this.firstname} - ${this.lastname} - ${this.age} - ${this.authorities}`)
  53. }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement