Advertisement
Guest User

Untitled

a guest
Jul 18th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. export interface IFighter {
  2.     readonly _name: string;
  3.     protected _health: number; // [ts] 'protected' modifier cannot appear on a type member.
  4.     _power: number;
  5.     health: () => number;
  6.     name: () => string;
  7.     setDamage: (damage: number) => void;
  8.     hit: (enemy: Fighter, point: number) => void;
  9.     knockout: () => Promise<any>;
  10.    
  11.  
  12. }
  13.  
  14.  
  15. export class Fighter implements IFighter { // Class 'Fighter' incorrectly implements interface 'IFighter'.
  16. // Property '_health' is protected in type 'Fighter' but public in type 'IFighter'.
  17.     _name: string;
  18.      protected _health: number;
  19.     _power: number;
  20.   constructor(name: string, health: number, power: number) {
  21.     this._name = name;
  22.     this._health = health;
  23.     this._power = power;
  24.   }
  25.  
  26.   health(): number {
  27.     return this._health;
  28.   }
  29.  
  30.   name(): string {
  31.     return this._name;
  32.   }
  33.  
  34.   setDamage(damage: number): void {
  35.     this._health = this._health - damage;
  36.     console.log(`${this._name} got ${damage} dmg. ${this._health}hp less`);
  37.   }
  38.  
  39.   hit(enemy: Fighter, point: number): void {
  40.     let damage: number = point * this._power;
  41.     enemy.setDamage(damage);
  42.   }
  43.  
  44.   knockout(): Promise<any> {
  45.     return new Promise((resolve, reject) => {
  46.       console.log("time is over");
  47.       setTimeout(() => {
  48.         resolve(() => {});
  49.       }, 500);
  50.     });
  51.   }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement