Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface ApiUser {
- firstname: string
- lastname: string
- age: number
- isSuperUser: boolean
- authorities: string[]
- createdOn: Date
- lastModifiedOn: Date
- }
- class User {
- public constructor(
- protected firstname: string,
- protected lastname: string,
- protected age: number) {}
- private (api: ApiUser) {
- if (!api.isSuperUser) {
- return new User(
- api.firstname,
- api.lastname,
- api.age
- )
- } else {
- return SuperUser.of(new User(User));
- }
- }
- displayInfos() {
- console.info(`${this.firstname} - ${this.lastname} - ${this.age}`)
- }
- }
- class SuperUser extends User {
- private constructor(firstname: string, lastname: string, age: number, private authorities: string[]) {
- super(firstname, lastname, age);
- }
- public static of(api: ApiUser) {
- if (!api.isSuperUser) {
- throw new Error('Cannot instantiate if not super user')
- } else {
- return new SuperUser(
- api.firstname,
- api.lastname,
- api.age,
- api.authorities
- )
- }
- }
- displayInfos() {
- console.info(`${this.firstname} - ${this.lastname} - ${this.age} - ${this.authorities}`)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement