Advertisement
ivolnoboi

Untitled

Jan 20th, 2022
1,166
54 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     Напишите class Base
  3.     Используйте блоки "Код без ошибок" и "Код с ошибками" для проверки типизации
  4.     После выполнения кода в консоли должно быть число 40
  5. */
  6.  
  7. abstract class Base{
  8.  
  9.     x: number;
  10.     protected y: string;
  11.     constructor(x: number, y:  string){
  12.         this.x = x;
  13.         this.y = y;
  14.     }
  15.  
  16.     abstract calc(y: number):number;
  17. }
  18.  
  19. /* Код без ошибок */
  20. class A extends Base {
  21.     constructor(x: number) {
  22.         super(x, "A");
  23.     }
  24.  
  25.     public calc(y: number): number {
  26.         return this.x + y;
  27.     }
  28. }
  29.  
  30. class B extends Base {
  31.     constructor(y: string) {
  32.         super(10, y);
  33.     }
  34.  
  35.     public calc(y: number) {
  36.         return parseInt(this.y) + y;
  37.     }
  38. }
  39.  
  40. const calculators: Base[] = [new A(10), new B("10")];
  41. const sum = calculators.map(x => x.calc(x.x)).reduce((a, c) => a + c);
  42. console.log(sum);
  43. /* --- */
  44.  
  45. /*
  46.     Комментариями @ts-expect-error помечены строчки, в которых должны быть ошибки в финальном решении.
  47.     Если в этих строчках ошибок не будет, компилятор TS выдаст ошибку компиляции, подробнее можно прочитать здесь:
  48.     https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-9.html#-ts-expect-error-comments
  49. */
  50.  
  51. /* Код с ошибками */
  52. // @ts-expect-error
  53. calculators[0].y;
  54. // @ts-expect-error
  55. new Base(10, "10");
  56. /* --- */
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement