Typescript: рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ (рдЧреИрд░-рдЙрдкрд╡рд░реНрдЧреАрдп)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рдЕрдкреНрд░реИрд▓ 2016  ┬╖  124рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: microsoft/TypeScript

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдЙрдк-рд╡рд░реНрдЧреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рд╕рдВрдХрд▓рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрдХрд▓рди рдкрд░ рдЪреЗрддрд╛рд╡рдиреА рджреЗ рдпрджрд┐ рд╡рд╣ рдореВрд▓ рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рдЕрдиреНрдп рд╡рд░реНрдЧ рджреЗрдЦрддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛ рдкрд░ рдлрд╛рдЗрдирд▓ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдПрдХ рд╣реА рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

final class foo {
    constructor() {
    }
}

class bar extends foo { // Error: foo is final and cannot be extended
    constructor() {
        super();
    }
}
Suggestion Won't Fix

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП final рд╕рдВрд╢реЛрдзрдХ рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

class Foo {
  final fooIt():void{

  }
}

class Bar {
  fooIt():void {

  }
}
// => Method fooIt of Bar cannot override fooIt of Foo, because it is final.

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдХреНрд╕рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдореИрдВ рдлреВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ рддрддреНрдХрд╛рд▓ рдмрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

import Whatever ...

abstract class Foo {
  private ImportantVariable:boolean;

  protected abstract fooIt_inner:Whatever();

  public final fooIt():Whatever() {
    //do somestate change to aprivate member here, which is very crucial for the functionality of every Foo:
    ImportantVariable = true;
    //call the abstract inner functionality:
    return this.fooIt_inner();    
  }
}

рд╕рднреА 124 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдирд┐рдЬреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдореБрдЭреЗ рдЬреЛ рдпрд╛рдж рдЖрдпрд╛ рдЙрд╕рд╕реЗ рдореБрдЭреЗ рдпрдХреАрди рдерд╛ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкрд░ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдХреАрд╡рд░реНрдб рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреЗрд╕реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

рдпрд╣ рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рдЬрд┐рд╕реЗ TS 2.0 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ typescript@next рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП https://github.com/Microsoft/TypeScript/pull/6885 рджреЗрдЦреЗрдВред

рдареАрдХ рдзрдиреНрдпрд╡рд╛рдж

рдХреНрдпрд╛ рдирд┐рдЬреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рднреА рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдХрдХреНрд╖рд╛ рд╕реЗ рдмрд╛рд╣рд░ рддрддреНрдХрд╛рд▓ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ? рдпрд╣ рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛ рдХрд╛ рд╕рд╣реА рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИред

рдЬрд╛рд╡рд╛ рдФрд░/рдпрд╛ рд╕реА# рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП final рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЕрдВрддрд┐рдо рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдореВрд▓реНрдп рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдо рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдмрд┐рдирд╛ рдлрд╛рдЗрдирд▓ рдХреЗ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрдХреНрд╖рд╛ рдХреЗ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдФрд░/рдпрд╛ рдЙрди рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рди рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдирдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВред

рдореИрдВ рдЗрд╕рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВ, рдмрд▓реНрдХрд┐ рдореИрдВ рджреБрдЖрдУ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред рдирд┐рдЬреА рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЛ рднреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрддреНрдХрд╛рд▓ рд╣реЛрдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдВред рд╕рд╛рде рд╣реА рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рдордиреЗ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдореБрдЭреЗ рдЙрдирдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░рдЦрд╛рдиреЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛ред рдореЗрд░реЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╕рдорд░реНрдерди рдХрд╛ рдореБрдЦреНрдп рдореВрд▓реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЧрд▓рддрд┐рдпрд╛рдБ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдмрд╣рд╕ рдХрд░рдирд╛: рдЬрдм рдореИрдВ рдлрд╝рдВрдХреНрд╢рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЧрд▓рддрд┐рдпрд╛рдБ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ? рдореИрдВ рдпрд╣ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЕрдлрд╝рд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ, рдХрд┐ рдЕрдВрддрд┐рдо рдХреАрд╡рд░реНрдб рдЬреИрд╕реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдХреЗрд╡рд▓ рджреВрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдореВрд▓ рдЗрд░рд╛рджреЗ рд╕реЗ рдЯрдХрд░рд╛рддрд╛ рд╣реИ: рдПрдХ рд╕рдВрдХрд▓рди рд╕реНрддрд░ рдЬреЛрдбрд╝рдХрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдПрдВ, рдЬреЛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдпрдерд╛рд╕рдВрднрд╡ рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЧреНрд░рд┐рдоред рдпрд╛ рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЗрд░рд╛рджреЗ рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛?

рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП final рд╕рдВрд╢реЛрдзрдХ рднреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

class Foo {
  final fooIt():void{

  }
}

class Bar {
  fooIt():void {

  }
}
// => Method fooIt of Bar cannot override fooIt of Foo, because it is final.

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдХреНрд╕рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдореИрдВ рдлреВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ рддрддреНрдХрд╛рд▓ рдмрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

import Whatever ...

abstract class Foo {
  private ImportantVariable:boolean;

  protected abstract fooIt_inner:Whatever();

  public final fooIt():Whatever() {
    //do somestate change to aprivate member here, which is very crucial for the functionality of every Foo:
    ImportantVariable = true;
    //call the abstract inner functionality:
    return this.fooIt_inner();    
  }
}

рд▓рд╛рдЧрдд рдмрдирд╛рдо рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдХрд╛рдлреА рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╣реИред рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рд░ рдирдИ рд╕реБрд╡рд┐рдзрд╛, рдирд┐рд░реНрдорд╛рдг, рдпрд╛ рдХреАрд╡рд░реНрдб рднрд╛рд╖рд╛ рдФрд░ рд╕рдВрдХрд▓рдХ/рдЙрдкрдХрд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рднрд╛рд╖рд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдореАрдЯрд┐рдВрдЧ рдореЗрдВ рд╣рдо рдЬреЛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдЯреНрд░реЗрдбрдСрдлрд╝ рдХреЛ рд╕рдордЭрдирд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рдЬрдм рдЕрддрд┐рд░рд┐рдХреНрдд рдореВрд▓реНрдп рд╢реБрд░реВ рдХреА рдЧрдИ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред

рд╕рдореБрджрд╛рдп рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдлрд╝реАрдбрдмреИрдХ рдЬреЛрдбрд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рд▓реЙрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╕рдореНрдореЛрд╣рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде, рдореБрджреНрджреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдВрддрд┐рдо рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ, рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдИ рдЬрдЯрд┐рд▓рддрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдо рд╕реЗ рдХрдо рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдореВрд▓реНрдп рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрдм рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдо рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдмрд┐рдирд╛ рдлрд╛рдЗрдирд▓ рдХреЗ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд╛рд╣, рдХреНрд░рд┐рдВрдЧ! рд╕реНрдЯреЗрдЯрд┐рдХ рдкреНрд░рдХрд╛рд░ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реБрд░рдХреНрд╖рд╛ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИред

рдлрд╝рд╛рдЗрдирд▓ (рд╕реАрд▓рдмрдВрдж) рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рд╕рд╛рде рд╡рд╣реАрдВ рд╣реИ, рдЬреЛ рдореИрдВ рдХреНрд▓рд╛рд╕ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдереЛрдбрд╝рд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред рдореБрдЭреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИред

рд╕реНрдЯреЗрдЯрд┐рдХ рдкреНрд░рдХрд╛рд░ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реБрд░рдХреНрд╖рд╛ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИред

рдмрд┐рд▓реНрдХреБрд▓ред рдЬрд┐рд╕ рддрд░рд╣ private рджреВрд╕рд░реЛрдВ рдХреЛ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, рдЙрд╕реА рддрд░рд╣ final рджреВрд╕рд░реЛрдВ рдХреЛ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

рджреЛрдиреЛрдВ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдХреЗ OO рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред

@pauldraper рдФрд░ @mindarelus рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реИрдВред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рд╕рдордЭ рдореЗрдВ рдЖрдПрдЧрд╛ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╛рдж рдХрд░рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдлрд╛рдЗрдирд▓ рдХреЗрд╡рд▓ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдлрд╛рдпрджреЗрдордВрдж рд╣реИ, рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рднреА рдлрд╛рдпрджреЗрдордВрдж рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Object.freeze рдФрд░ Object.seal рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдХреЗ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

@aluanhaddad рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдЖрдкрдХреЛ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛"?
рдлреНрд░реАрдЬрд┐рдВрдЧ рдпрд╛ рд╕реАрд▓рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирдП рдЧреБрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд░реЛрдХрдирд╛, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рд╡реНрдпреБрддреНрдкрдиреНрди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЧреБрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдореИрдВ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЛ рд╕реАрд▓ рдХрд░ рджреВрдВ, рдлрд┐рд░ рднреА рдореИрдВ рдЪрд╛рдЗрд▓реНрдб рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬреЛ рдЙрд╕ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ . рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдХреЛрдИ рдЧреБрдг рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрд╛ред

рдЬрд╛рд╡рд╛ рдореЗрдВ рдХрдХреНрд╖рд╛ рдпрд╛ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдкрд░ final рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБ рдХреА рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдФрд░ рдЕрдзрд┐рдХ рдХрд░рдирд╛ рд╣реИред (рдЖрдЗрдЯрдо 15. рдЬреЛрд╢реБрдЖ рдмрд▓реЛрдЪ, рдкреНрд░рднрд╛рд╡реА рдЬрд╛рд╡рд╛)

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпреЗ рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрдПрд╕ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реИ (рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд╕реБрдзрд╛рд░реЗрдВ)ред рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рдБ?

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рдХреЛрдб рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдЕрдм... рдпрд╣ рдХреИрд╕реЗ рдЬреЗрдПрд╕ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╢рд╛рдпрдж рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдмрд╛рдбрд╝ рдХреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрдХреНрд╖ рдкрд░ рд░рд╣ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реА рд╢реЗрд╖ рд╕рдВрдХрд▓рди-рд╕рдордп рдЬрд╛рдВрдЪ рд╣реЛрддреА рд╣реИред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореИрдВ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рд╣реИ рдирд╛? рд╣рдорд╛рд░реА рдЕрдирджреЗрдЦреА рдЧрд▓рддрд┐рдпреЛрдВ рдХреА рджреЛрд╣рд░реА рдЬрд╛рдБрдЪ?

рдореЗрд░реЗ рд▓рд┐рдП final рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд╣реА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдПрдЧрд╛ рдЬреИрд╕реЗ private рдпрд╛ рдЯрд╛рдЗрдкрд┐рдВрдЧ, рд╡рд╣ рдХреЛрдб рдЕрдиреБрдмрдВрдз рд╣реИред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдЕрдиреБрдмрдВрдз рдЯреВрдЯ рди рдЬрд╛рдПред рдореБрдЭреЗ рдпрд╣ рдмрд╣реБрдд рдкрд╕рдВрдж рдЖрдПрдЧрд╛ред

@ hk0i рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЖрдЗрдЯрдо 17 (рджреНрд╡рд┐рддреАрдп рд╕рдВрд╕реНрдХрд░рдг) рдореЗрдВ рднреА рдЙрд╕реА рддрд░рд╣ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рд▓реЗрдХрд┐рди рд╕рд╛рдзрд╛рд░рдг рдареЛрд╕ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рд╡реЗ рди рддреЛ рдЕрдВрддрд┐рдо рд╣реИрдВ рдФрд░ рди рд╣реА рдЙрдкрд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдерд┐рддрд┐ рдЦрддрд░рдирд╛рдХ рд╣реИред рд╣рд░ рдмрд╛рд░ рдРрд╕реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рд╡рд░реНрдЧ рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреЗред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЧреИрд░-рдЕрдВрддрд┐рдо рдареЛрд╕ рд╡рд░реНрдЧ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдк-рд╡рд░реНрдЧ-рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдЙрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдкрд╡рд░реНрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдЖрд╕рд╛рди рд╣реИ рдХреНрд▓рд╛рд╕ рдлрд╛рдЗрдирд▓ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ред рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЛ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдпрд╛ рдкреИрдХреЗрдЬ-рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдкрдмреНрд▓рд┐рдХ рд╕реНрдЯреИрдЯрд┐рдХ рдлреИрдХреНрдЯреНрд░рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред

рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рднрд╛рд╖рд╛ рдХреА рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдирд╣реАрдВ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЕрдореВрд░реНрдд рдХреАрд╡рд░реНрдб рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди/рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдФрд░ рдЙрд╕ рдХреЛрдг рд╕реЗ рднрд╛рд╖рд╛ рдХреА рд░рдХреНрд╖рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреВрд░рд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрди рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдпрд╛ рди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ final рдПрдХ рд╡рд░реНрдЧ рдХреЛ рд╕реАрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛ред рдПрдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдмрд╣реБрдд рд╕реА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╕рдмрд╕реЗрдЯ рдХреЛ рдмреЗрдирдХрд╛рдм рдХрд░реЗрдВред рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдпреЗ рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрдмрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрднреЛрдХреНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕реАрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рд╕реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдЧрд╛ рдХрд┐ рдХреЛрдИ рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред

рдЖрдк рдпрд╣ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рднреА рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рд▓реЗ рд░рд╣рд╛ рд╣реИред рдЙрди рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдЭрд╛рд╡ рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд▓рд╕реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЬреЛ рджреВрд╕рд░рд╛ рдЙрддреНрддрд░ рдкрдврд╝рд╛ рд╣реИ, рд╡рд╣ рдирд┐рдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рдирд╣реАрдВ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдКрдкрд░ рдмрддрд╛рдпрд╛ рд╣реИред

рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣, рдореИрдВ рднреА рд╡рд░реНрдЧ рдХреЛ рд╕реАрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд░реВрдВрдЧрд╛ред

@mhegazy рдирд┐рдЬреА

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрд▓рдмрдВрдж/рдЕрдВрддрд┐рдо рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрдХ рд░рдЦрдиреЗ рдХреА рд╡рдХрд╛рд▓рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╕реАрд▓рдмрдВрдж/рдЕрдВрддрд┐рдо рдЪрд┐рд╣реНрдирд┐рдд рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдпрд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдореИрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд┐рд░реНрдорд╛рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рд╡рд╕реНрддреБ рдХреЛ рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░ рд╕рдХреВрдВ, рд▓реЗрдХрд┐рди рдХрдХреНрд╖рд╛ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рд░реЛрдХреВрдВ, рдФрд░ рдХреЗрд╡рд▓ рд╕реАрд▓рдмрдВрдж/рдлрд╛рдЗрдирд▓ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реА рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрдЧреАред

рдПрдХ рдХрд╛рд░реНрдп рд╣реИ - рдХреЛрдб рд▓рд┐рдЦреЗрдВ рдХрд┐

  • рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ
  • рд╡рд┐рд░рд╛рд╕рдд рдореБрдХреНрдд рд╣реИ
  • рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рддрд░реАрдХреЗ рдореБрдХреНрдд

рдФрд░ final рдХреАрд╡рд░реНрдб рдпрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЖрдИрдПрдордПрдЪрдУред

рдореИрдВ final рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдФрд░ рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреМрди рд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдХрд╣рдиреЗ рдХрд╛ рд╕рдорд░реНрдердХ рд╣реВрдВ рдХрд┐ рдЖрдк рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рддрд╛рдХрд┐ рдкрд╛рдардХ рдХреЛ рдкрддрд╛ рдЪрд▓реЗ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдХрд┐ рдпрджрд┐ рдЖрдк рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИред

@zigszigsdk рдЪреВрдВрдХрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрднреА рднреА рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛?

final :
рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпрд╣ рдЕрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╢рд┐рдХрд╛рдпрдд рд╣реЛрдЧреА рдпрджрд┐ рдХреЛрдИ рд╕реБрдкрд░ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИ-рдЬрд┐рд╕реЗ рдЕрдВрддрд┐рдо рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ- this рд╕рдВрджрд░реНрдн рд╕реЗред

override :
рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпрд╣ рдЕрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╢рд┐рдХрд╛рдпрдд рд╣реЛрдЧреА рдпрджрд┐ рдХреЛрдИ override рд╡рд┐рдзрд┐ рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рд╕реБрдкрд░ рдореЗрдВ рдЙрд╕ рдирд╛рдо рд╕реЗ рдХреЛрдИ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕реЗ final рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдпрд╣ рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рднреА рджреЗ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк this рд╕рдВрджрд░реНрдн рд╕реЗ рд╕реБрдкрд░ рдХреА рд╡рд┐рдзрд┐ рдЫреБрдкрд╛рддреЗ рд╣реИрдВ рдФрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдмрддрд╛рддреЗ рд╣реИрдВред

рдЬрд╛рд╡рд╛ рдФрд░/рдпрд╛ рд╕реА# рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдирдХрд░ рдХрд┐ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЕрдВрддрд┐рдо рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдореВрд▓реНрдп рд╣реИред

@mhegazy рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ! рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛ рдХреЗ рдХрд┐рди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдкреНрд░рднрд╛рд╡реА рдЬрд╛рд╡рд╛" рдореЗрдВ рдЖрдЗрдЯрдо 17 рджреЗрдЦреЗрдВ: "рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╛ рдЕрдиреНрдпрдерд╛ рдЗрд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдВ":

рдПрдХ рдЧреИрд░-рдЕрдВрддрд┐рдо рдареЛрд╕ рд╡рд░реНрдЧ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдк-рд╡рд░реНрдЧ-рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдЙрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдФрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдкрд╡рд░реНрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдЖрд╕рд╛рди рд╣реИ рдХреНрд▓рд╛рд╕ рдлрд╛рдЗрдирд▓ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ред

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЕрдВрддрд┐рдо рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╣реИред рдРрд╕рд╛ рдмрд╣реБрдд рдХрдо рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЛ рдЙрд╕рдХреЗ рдХрд┐рд╕реА рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЗ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╣рд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдпреЛрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЧреИрд░-рдУрд╡рд░рд░рд╛рдЗрдб рдФрд░ рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдПрдХ рдпрд╛ рджреЛ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЕрдВрддрд┐рдо рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдРрд╕реЗ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдХрдореА рдЖрдПрдЧреАред рдФрд░ рдЕрдзрд┐рдХ рдмрд╛рд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдПрдХ рдпрд╛ рджреЛ рдЕрддрд┐рджреЗрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдареАрдХ рд╡рд╣реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ final рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред

рдПрдХ рдФрд░ рд╕рдореНрдореЛрд╣рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдорд▓рд╛ @mhegazy ред рдЖрдЬ рдореИрдВрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдердб рдкреИрдЯрд░реНрди рд╕реАрдЦрд╛, рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдердб рдкреИрдЯрд░реНрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ final рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрдпрд╛рд░реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЕрдлрд╝рд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ!

рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреИрдЯрд░реНрди рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЛ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдХреБрдЫ рдЪрд░рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдлрд╛рдЗрдирд▓ рдХреЗ рдмрд┐рдирд╛ рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдЬрд┐рддрдирд╛ рдореИрдВ final рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрджреЗрд╢ рдЬреЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╣рдореЗрдВ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо final , рддреЛ рд╣рдореЗрдВ рдРрд╕реА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╣реЛрддреЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдЬрд┐рд╕реЗ рдЖрдк рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ рдПрдирдкреАрдПрдо рдкрд░), рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рдЬреЛ рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдХреЛрдб рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреА рд╣реИ рдпрд╛ рдирд╣реАрдВред рдУрд╡рд░рд░рд╛рдЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рд╡реЗ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреЗрддрд╛ рд╣реИред

рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ рддреЛ рдпрд╣ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреА рд╣реИред рдпрджрд┐ рдЙрдк-рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рд╡рд╣реА рд╣реЛрдЧрд╛ рдЕрдиреНрдпрдерд╛ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдХрдХреНрд╖рд╛ рдореЗрдВ рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ рднреА рд╣реИрдВ рдЬреЛ "рдлрд╝реЙрд▓рдмреИрдХ" рд╡рд┐рдзрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВ, рд╡реЗ рдЕрдзрд┐рдХ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ DOM рдореЗрдВ рдХреЛрдИ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдирд╛ рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рд╣реЛрдВред

рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдореЗрд░реЗ 5 рд╕реЗрдВрдЯ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдареЛрд╕ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗ рдирд╣реАрдВ рдлреИрд▓рддрд╛ рд╣реИред рдЬреИрд╕реЗ @lucasyvas рдиреЗ рдХрд╣рд╛, рд░рдЪрдирд╛ рдХрд╛ рдкрдХреНрд╖ рд▓реЗрдВред рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдирдП рдареЛрд╕ рд╡рд░реНрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред

рдореИрдВ рджреЛрдиреЛрдВ рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде, рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╡реЛрдЯ рдХрд░рддрд╛ рд╣реВрдВ

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣рддрд╛ рдХрд┐ рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдВрддрд┐рдо рдХреАрд╡рд░реНрдб рдХрд╛ рдкреИрдЯрд░реНрди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛?

рдХреНрдпрд╛ рдЕрдВрддрд┐рдо рдХреАрд╡рд░реНрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ/рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЙрдХреНрдд рд╡рд░реНрдЧ/рд╡рд┐рдзрд┐ рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб/рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХреЗрдЧрд╛?

рдлрд╛рдЗрдирд▓ рджреЗрдЦрдиреЗ рдХрд╛ рдореЗрд░рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рдХреЛ "рдлреНрд░реАрдЬ" рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдм рдФрд░ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдХреБрдЫ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ "рдмрдЧ" рдареАрдХ рдХрд░рдирд╛ рдпрд╛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@niokasgami рдлреНрд░реАрдЬ [рдбреЗрдЯрд╛] рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ (https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/freeze)
рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ES6 рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ (рдЪрд░ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП "рдЕрдВрддрд┐рдо" рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдХ рд╕реБрдкрд░ рдЪрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдЬрд╛рд╡рд╛ рдореЗрдВ "рдлрд╛рдЗрдирд▓" рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕реАрд▓рдмрдВрдж рд╕реА # рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ ред

рдЬреИрд╕рд╛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реА # рд╕реЗ рджреГрдврд╝рддрд╛ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИ, рдЗрд╕ рдмрд╛рдд рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ "рд╕реАрд▓рдмрдВрдж" рдЪреБрдирд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдм, рд╣рдореЗрдВ рд╕рдВрднрд╡рддрдГ ES6 рд╕реАрд▓ рдХреЗ рд╕рд╛рде рднреНрд░рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реАрд▓ рдХрд░ рджреЗрддрд╛ рд╣реИ?

@Xample рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдкрд░ рдлрд╛рдЗрдирд▓ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рд▓рд┐рдЦ рд░рд╣рд╛ рдерд╛ рддреЛ рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ 100% рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВред

function(){
    let final myVariable = 'Awesome!'
    document.addEventListener('scroll', e => {
        console.log(myVariable)
        myVariable = 'Not Awesome' // Throws an error
    })
}

@TheColorRed рдЦреИрд░, рдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрдВрддрд┐рдо рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХрд╛ рдЕрд░реНрде рд╕реНрдерд┐рд░ рд╣реИ, рд╣реИ рдирд╛?

@EternalPhane рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдЬреИрд╕реЗ рджрд╛рдпрд░реЗ рдореЗрдВ const рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ ... рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╡рд┐рдзрд┐ рдХреЗ рднреАрддрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рд╕реЛрдЪрд╛ ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рд╢реВрдиреНрдп рд╣реИ ...

@Xample рд╣рд╛рдБ, рдореИрдВ рд╕реА # рд╕реЗ рдореБрд╣рд░рдмрдВрдж рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдмрд┐рдВрджреБ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдпрд╣ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рджреЛрдиреЛрдВ рдХреАрд╡рд░реНрдб рдореБрд╣рд░ рдФрд░ рдлрд╛рдЗрдирд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢реНрд░реЗрдгреА рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХреЗ рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рд╕реАрд▓ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдореБрд╣рд░рдмрдВрдж) рдФрд░ рдЕрдВрддрд┐рдо рд╣рдо рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: /

рдЬрд╛рд╡рд╛ рдореЗрдВ рдЖрдк final рдХрд┐рд╕реА рднреА рд╡реЗрд░рд┐рдПрдмрд▓, рдореЗрдердб рдпрд╛ рдХреНрд▓рд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдкреБрди: рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЧреИрд░-рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рднреА рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ)ред рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рдХреЛрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд╣реАрдВ рд╣реИ ( extends ... рдХреАрд╡рд░реНрдб)ред рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рдЙрдкрд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдХреЛрдИ рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред

рдЬрд╛рд╡рд╛ рдореЗрдВ final рдореБрдЦреНрдп рдХрд╛рд░рдг:

  • рдЪрд░ рдХреА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛ рдХрдо рдХрд░реЗрдВ: рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП
  • рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдВ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХреЗ: рд╡рд┐рд░рд╛рд╕рдд рдкрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрд▓ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдкрдХреЗ рдЙрдкрд╡рд░реНрдЧ рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рд╕реБрдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╡рд┐рд░рд╛рд╕рдд рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реЛрддреА рд╣реИ
  • рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдИ рдореВрд▓реНрдп рдмрджрд▓рдиреЗ рдХрд╛ рдХреЛрдИ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рдЕрдм рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ
  • рдЬрдм рд╡реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдорд╛рди рдЬреЛ рдЖрдк рд╣рд░ рдЬрдЧрд╣ рджреЗрдЦреЗрдВрдЧреЗ, рдЬреИрд╕реЗ public static final String KEY = "someStringKeyPathHere" , рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдПрдХрд╛рдзрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдХрд▓рди рд╕рдордп рд▓рд╛рдн рд╣реИ

рдореИрдВрдиреЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд░рдЦрдиреЗ рдФрд░ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред

@TheColorRed рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдк рдХреЙрд▓рдмреИрдХ (рдЕрдирд╛рдо рд╡рд░реНрдЧ) рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЕрдВрджрд░ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рд╕реЗ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдкреБрди: рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЬрд▓реНрдж рд╣реА рдХрд┐рд╕реА рднреА рд╕рдордп рджреЗрдЦреЗрдВрдЧреЗред рдпрд╣ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рд╕рд╛рде рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдЬреЗрдПрд╕ рдореЗрдВ рдврд▓рд╛рди рд╕реЗ рдирд┐рдкрдЯреЗрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдВрдХреЗрдд рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдиреЗ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ "рд▓рд╛рдн" рд╣реИрдВ рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЖрдкрдХрд╛ рдХреЛрдб рдЬреЗрдПрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрддрддрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк ES6 рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдмреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░реВрдк рд╕реЗ рднрд▓реЗ рд╣реА рдЖрдк рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд▓рд╛рднреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд▓рд╛рдИ рдкрд░ рдПрдХ рдердкреНрдкрдбрд╝ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЬрд╛рд╡рд╛-рдПрд╕реНрдХ final рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЬреЗрдПрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред

@ hk0i рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреА рдмрд╛рдд рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдФрд░ рдЖрдкрдХреА рд░рд╛рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЕрд╕рд╣рдордд рд╣реВрдВред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд┐рдВрдЧ/рдЯреНрд░реИрдХрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХрд╣реВрдВрдЧрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдХреНрд▓реАрди" рдХреЛрдб рд╣реИ (рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдЙрд╕ рдкрд░ рдЙрджреНрдзрд░рдг рди рджреЗрдВ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ рдХреБрдЫ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдкреЗрдЧреЗрдЯреА рдХреЛрдб рд╣реИ)

рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ JS рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реНрдб рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ JS рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред

рдпрджреНрдпрдкрд┐ рдЬрдм рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рд░рдирдЯрд╛рдЗрдо/рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐ рджреЗрдЦрдиреЗ рдФрд░ рдЬреЗрдПрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдПрдЪрдИрд╕реАрдХреЗ рдЬреЗрдПрд╕ рдмрдЧ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)

рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреАрдЖрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрд╡рд░реЛрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдУрд╣ рдареАрдХ рд╣реИ, рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрджрд┐ рдХреЛ рдЙрддреНрддреЗрдЬрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ ...

рдЕрдЪреНрдЫреА рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдХрд░ рджреБрдЦ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреИрд╕реЗ "рдЯреНрд░реВ" рд╕реНрдЯреИрдЯрд┐рдХ рдХреНрд▓рд╛рд╕ рдХреАрд╡рд░реНрдб рдХреА рдХрдореА рд╣реИ рдЬреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред

@ hk0i рдореИрдВ рди рддреЛ рд╕рд╣рдордд рд╣реВрдВ рдФрд░ рди рд╣реА, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреЛрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред рд╣рдореЗрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рдлрд╝рд╛рдЗрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдпрд╛ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдг рд╕реЗ)ред

рд╡рд░реНрддрдорд╛рди ES6 рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд░рдирдЯрд╛рдЗрдо рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдЬрд╛рдВрдЪ (рдСрдмреНрдЬреЗрдХреНрдЯ.рд╕реАрд▓ рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ.рдлреНрд░реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╕рдордп рд╕реАрдзреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрдиреЗ рдХрд╛ рд▓рд╛рдн рдЦреЛ рджреЗрддреЗ рд╣реИрдВ (рднрд▓реЗ рд╣реА рдпрд╣ рдЗрд╕ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

@TheColorRed рд╣рд╛рдБ ... рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдерд╛рдиреАрдп рдФрд░ рд╡рд░реНрдЧ рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрддрд░ рд╣реИред

  • readonly рдПрдХ рд╡рд░реНрдЧ рдЪрд░ рдХреЗ рд▓рд┐рдП
  • const : рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдЪрд░ рдХреЗ рд▓рд┐рдП

рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╡рд┐рдзрд┐ рдпрд╛ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рд╕реА ++ рдореЗрдВ рдЖрднрд╛рд╕реА рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЛрдЪреЗрдВ), рд╣рдо рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╕реБрдкрд░ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ (рдЬрд┐рд╕реЗ рд╣рдо super рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

@niokasgami рд╢рд╛рдпрдж рдирд╛рдордХрд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрднреА рднреА рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ Object.seal рдПрдХ рд╡рд░реНрдЧ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рд╕реАрд▓ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╡рд╕реНрддреБ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред

рдЯреАрдПрд▓; рдбреЙ:

  • рд░реЛрдХрдерд╛рдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реНрдкрд╖реНрдЯ рдирд╛рдо рд╣реЛрдЧрд╛
  • рд░реЛрдХрдерд╛рдо рдУрд╡рд░рд░рд╛рдЗрдб рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдореНрдореАрджрд╡рд╛рд░ рдирд╛рдо рд╣реЛрдЧрд╛
    рд▓реЗрдХрд┐рди: seal рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ C# рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЫреЛрдЯрд╛ рдФрд░ рд╕рдорд╛рди рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред

рд╡реИрд╕реЗ рдореИрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ Object.preventExtensions()
рдЕрдВрддрд░ рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛

рдЕрдзреНрдпрдпрди

  • рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рд╣реИ... рдХреМрди рдХреЗрд╡рд▓ рд▓реЗрдЦрди рдЪрд░ рдЪрд╛рд╣рддрд╛ рд╣реИ?

рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛

  • рдПрдХ рдЪрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХреЗрдВ: рдХрдХреНрд╖рд╛ рдХреЗ рд╕рджрд╕реНрдп рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрд╕ (рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП)
  • рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХреЗрдВ: рдХреБрдЫ рднреА рдЖрдкрдХреЛ (рдХрдХреНрд╖рд╛ рд╡рд┐рдзрд┐ рдХреЗ рднреАрддрд░) this.aMethod = ()=>{} рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдРрд╕реЗ рд╣реИрдХреНрд╕ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ readonly рднреА рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП? delete this.aMethod

рдмрдирд╛рдирд╛

  • рдХреЗрд╡рд▓ рд╡рд╕реНрддреБ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ: class рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрдЧ рдиреЗ рд╡рд╕реНрддреБ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдордХреНрдЦреА рдкрд░ рдирдП рдЧреБрдг рдмрдирд╛рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ ... рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП this.unKnownProperty = "something" ts рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рд╕рдВрдХрд▓рди рд╕рдордп рддреНрд░реБрдЯрд┐

рд╡рд┐рд╕реНрддрд╛рд░

  • рдХреЗрд╡рд▓ рд╡рд░реНрдЧреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рд╣рдо рдХреБрдЫ рднреА рд╡рд╕реНрддреБ рд╣реА рдЕрднреА рддрдХ рдкрд░ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ... (рдмрдирд╛рдиреЗ рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╣реИ рдХреЗ рд╡рд┐рдкрд░реАрдд)ред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ final рдпрд╛ seal рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдЧрд╛ред рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ ES6 рдХреЗ рдлреНрд░реАрдЬ, рд╕реАрд▓ рдФрд░ preventExtensions рдХреЗ рд╕рд╛рде рд▓рдЧрд╛рддрд╛рд░ рдХреИрд╕реЗ рдмрдиреЗ рд░рд╣реЗрдВ? (рдЕрдЧрд░ рд╣рдореЗрдВ рдХрд░рдирд╛ рд╣реИ)ред
    рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рд╡рд░реНрдЧ рд╕реЗ рджреВрд╕рд░реА рдХрдХреНрд╖рд╛ рдмрдирд╛рдиреЗ рд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдбрд┐рд▓реАрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ (рдЬреЛ рд╡реИрд╕реЗ рднреА рдХреНрд▓рд╛рд╕ рдХреЛ рдбрд┐рд▓реАрдЯ рдХрд░рддрд╛ рд╣реИ)ред рд╕рд╡рд╛рд▓ "рдЕрдкрдбреЗрдЯ" рдХреЙрд▓рдо рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ final рд╡рд░реНрдЧ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ? рдПрдХ рд╡рд░реНрдЧ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреНрдпрд╛ рд╣реИ? рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣рд╛рдБ рд╣реИ ... рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЕрджреНрдпрддрди рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдХрдХреНрд╖рд╛ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рдордЭрдирд╛)? рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП... рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд░реНрдЧ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред рдЦреИрд░ ... рд╢рд╛рдпрдж рд╡реЗ рд╕реА # рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╣реА рдкреНрд░рд╢реНрди рдкрд░ рдЖрдП рдФрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ seal рдЕрдЪреНрдЫрд╛ рдХреАрд╡рд░реНрдб рдерд╛ред

рдЕрдзрд┐рднрд╛рд╡реА

  • рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╡рд░реНрдЧ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХреЗрдВред рдлрд┐рд░ рд╕реЗ, рд╣рдо рдЕрднреА рддрдХ рдХреБрдЫ рднреА рдУрд╡рд░рд░рд╛рдЗрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ (рдПрдХ рд╡рд░реНрдЧ рдХреЗ рднреАрддрд░ рд╡рд┐рдзрд┐) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдмрдирд╛рдиреЗ рд╕реЗ рд░реЛрдХреЗрдВ, рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ (рд╣рдо рд╡рд┐рдзрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдпрд╣ рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ)ред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдирд╛рдордХрд░рдг? preventOverrides ? рдпрд╛ рдлрд┐рд░ seal рдЬреИрд╕рд╛ рдХрд┐ C# рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдмреЛрдирд╕: рдЪреВрдВрдХрд┐ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рд╕реАрд▓ рдХрд░рдирд╛ рдЖрдо рддреМрд░ рдкрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╕реБрдкрд░ рдХреЛрдб рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕реБрдкрд░ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ (рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП) рд╡реЛрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рд╕реЛрдЪреЛ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдЧрд▓рдд рдордд рд╕рдордЭреЛ, рдореИрдВ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реВрдВред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╣реВрдВред рдореИрдВ рд╕рд┐рд░реНрдл рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреА рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рдорд╛рдирд╕рд┐рдХрддрд╛ рдХреЗ рдкреАрдЫреЗ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХрд╣ рд░рд╣реА рд╣реИ рдХрд┐ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред

... рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдБред

@ hk0i рдЬреЗрдирд░рд┐рдХ, рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдХрдИ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрднреА рднреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ ...

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рджреВрд░ рднрд╛рдЧрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЧреИрд░-рд╕реАрдзреЗ рддрд░реАрдХреЗ рд╕реЗ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬреЗрдирд░рд┐рдХ, рд░реАрдбреЛрдирд▓реА, рдЖрджрд┐ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рди-рд╕рдордп рдХреА рдзрд╛рд░рдгрд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрддреНрдкрдиреНрди рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдорд┐рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдЙрдЪрд┐рдд рдЦреЗрд▓ рд╣реИрдВред

final рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рднреА "рдорд┐рдЯрд╛" рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕реЗ "рдирд┐рд╖реНрдкрдХреНрд╖ рдЦреЗрд▓" рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ?

тАНтЩВя╕П

@TheColorRed рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдореЛрдмреЗрд╢ рдпрд╛ рддреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреНрдп рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИред
рдпрд╛ рд╡реЗ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдпрд╣ рдирдпрд╛ рдХреАрд╡рд░реНрдб рдХрдВрдкрд╛рдЗрд▓/рдХреЛрдбрд┐рдВрдЧ рд╕рдордп рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рддреЛ рдЕрдВрддрд┐рдо рдХреАрд╡рд░реНрдб рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдмреЗрд╣рдж рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред final рдХрдИ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк Jsdoc рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк "@ final" рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ jsdoc рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЪрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдореЗ рд╣реБрдП рд╣реИред

рдпрд╣рд╛рдБ рдПрдХ рдбрд┐рдЬрд╛рдЗрди рд╕рдВрдШрд░реНрд╖ред рд░реАрдбреЛрдирд▓реА рд╡реИрд░рд┐рдПрдмрд▓ рдФрд░ рдЧреЗрдЯреНрдЯрд░ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЕрдЧрд░ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ "рдлреНрд░реАрдЬ" рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рднреА рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рднреНрд░рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдЕрдВрддрд┐рдо рдпрд╛ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреИрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬрдм рддрдХ рд╣рдо рдЗрд╕ рдХреАрд╡рд░реНрдб рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд░реНрдЧ рдФрд░ рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╛ рдЕрдВрддрд┐рдо рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░реЗрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реАрд▓рдмрдВрдж (рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ.рд╕реАрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░ рд╕рдХрддрд╛ рд╣реИ) рдпрд╛ рдлрд╛рдЗрдирд▓ (рдЬреЛ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреНрд▓реИрд╢ рд░реАрдбреЛрдирд▓реА рдХреАрд╡рд░реНрдб) рдХреЗ рдмрдЬрд╛рдп рд╣рдо рдЗрд╕реЗ рдирд╛рдо рдФрд░ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ "рдкреНрд░рддреНрдпрдХреНрд╖" рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ "рд╡рд┐рдЪрд╛рд░" рд╣реИ рдЬреЛ рд╕рдорд╛рди рд╣реИ рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╕реА # рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдЕрд▓рдЧ рд╣реИ? рдореИрдВрдиреЗ рдХреБрдЫ рдкреНрд░реЗрд░рдгрд╛рдПрдБ рд▓реАрдВ рдХрд┐ рдХреИрд╕реЗ C# рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЧреИрд░-рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЛ рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдЖрднрд╛рд╕реА рд╣реИред

`рдиреЗрдорд╕реНрдкреЗрд╕ рдЙрджрд╛рд╣рд░рдг {

export class myClass {

    constructor(){}

    // Make the func non ovveridable by inheritance. 
    public unoveridable myMethod(){

    }

    public myMethodB(){

    }
}

export class MyClassB extends myClass {

    // Nope not working will throw an error of an nonOverridable error
    myMethod(){
        super.myMethod();
    }

    // Nope will not work since unoverridable.
    myMethod(){

    }

    // Design could be implemented differently since this could complicate  ┬╕
    // the pattern of typescript
    public forceoverride myMethod(){
      // destroy previous pattern and ignore the parent method thus a true ovveride
    }

    // Yup will work since it's still "virtual".
    myMethodB(){
        super.myMethodB();
    }
}
// Can extend an existing Parent class
// Declaring an unextendable class make all is component / func nonOverridable by 
// inheritance. (A class component can still be overwritten by prototype usage.)
export unextendable class MyFinalClass extends Parent {

    constructor()

    // nonoverridable by default.
    public MyMethod(){

    }
}
// nope throw error that MyFinalClass is locked and cannot be extended
export class MyChildClass extends MyFinalClass{}

}`

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд░реАрдбреЛрдирд▓реА рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред

@mhegazy рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЬрд╛рд╡рд╛ ( final ), C# ( sealed , readonly ), PHP рдЬреИрд╕реЗ final рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╕рдореБрджрд╛рдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднрд╛рд░реА рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ ( final ), рд╕реНрдХрд╛рд▓рд╛ ( final , sealed ), рдФрд░ C++ ( final , virtual ) рд╣реИред рдореИрдВ рдПрдХ рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рдУрдУрдкреА рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдПрдХ рдареЛрд╕ рддрд░реНрдХ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ рдХрд┐ рдЯреАрдПрд╕ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред

@bcherny @mhegazy рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВред рдореИрдВ рдХреЛрдИ рднреА рддрд░реНрдХрдкреВрд░реНрдг рдХрд╛рд░рдг рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рдХреНрдпреЛрдВ final рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рд╕рдВрдХрд▓рди-рд╕рдордп рдХреА рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА рдЬреЛ рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ - рдЖрдЗрдП рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ, рдЬреЗрдирд░рд┐рдХ, рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ, рдЙрдкрдирд╛рдо рдЯрд╛рдЗрдк рдХрд░реЗрдВ , рдЗрдВрдЯрд░рдлреЗрд╕ ... рд╕рднреА рдЪреАрдиреА! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рд╢рд╛рдпрдж рднрд╛рд╖рд╛ рдХреЛ рдЕрдиреНрдп рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдпрд╣ рдУрдУрдкреА 101 рд╣реИ ... рдпрд╣ рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рдЬрдм рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрднреА рднреА рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдерд╛!

@mhegazy рдХреНрдпрд╛ рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдирд┐рдЬреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рддрдХ 21 рдмрд╛рд░ рдбрд╛рдЙрди-рд╡реЛрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рдореБрджрд╛рдп рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд╛рд╣рддрд╛ рд╣реИ!

рд╡рд╛рд╣, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓реАред рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ

рдпрд╣рд╛рдБ рдмрд╣реБрдд рд╕рд╛рд░реА рдЕрдиреБрддреНрдкрд╛рджрдХ рд╢рд┐рдХрд╛рдпрддреЗрдВ рдЪрд▓ рд░рд╣реА рд╣реИрдВред рдХреГрдкрдпрд╛ рдХреЗрд╡рд▓ рдЖрд╡рд╛рдЬ рди рдЙрдард╛рдПрдВ - рд╣рдореЗрдВ рдпрд╣рд╛рдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ рдФрд░ рд╕рдореБрджрд╛рдп рдХреЛ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдмреЗрдХрд╛рд░ рджрд╛рдВрдд рдкреАрд╕рдиреЗ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдмрджрд▓рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдХреГрдкрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп рдмрдиреЗрдВ; рд╣рдо рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЕрдВрддрд┐рдо/рд╕реАрд▓рдмрдВрдж рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЕрдВрддрд┐рдо/рдореБрд╣рд░рдмрдВрдж рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдСрдл-рд╡рд┐рд╖рдп рдЪрд░реНрдЪрд╛ рд╣реБрдИ рд╣реИ рдЬреЛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред

рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рд╣рдордиреЗ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдереА рддрдм рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

  • рдХрдХреНрд╖рд╛рдПрдВ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рд╣реИрдВ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ ред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ final рдмрд┐рдирд╛ рдХрдХреНрд╖рд╛рдПрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИрдВ, рддреЛ рдпрд╣ TC39 рд╕рдорд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЙрдард╛рдиреЗ рдпрд╛ es-рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред рдпрджрд┐ рдХреЛрдИ рднреА TC39 рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдпрд╛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдХрд┐ final рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдпрджрд┐ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдкрд░ new рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдирд╛ рдХрд╛рдиреВрдиреА рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ-рд╕реЗ-рдПрдХ рд░рдирдЯрд╛рдЗрдо рдкрддреНрд░рд╛рдЪрд╛рд░ рд╣реИред рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреА рдзрд╛рд░рдгрд╛ рдЬреЛ new 'd рд╣реЛ рд╕рдХрддреА рд╣реИ рд▓реЗрдХрд┐рди super 'd рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ
  • рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ OOP рдХреАрд╡рд░реНрдб рд╕реВрдк рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдмреЗрд╣рддрд░ рд░рдЪрдирд╛ рдпрд╛рдВрддреНрд░рд┐рдХреА рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рд╕реА # рдФрд░ рдЬрд╛рд╡рд╛ рдХреЗ рд╣рд░ рдПрдХ рдХреАрд╡рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  • рдЖрдк "рдЪрд╛рд╣рд┐рдП-рдЕрдВрддрд┐рдо" рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рдХреЛ рддреБрдЪреНрдЫ рд░реВрдк рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдЪрд┐рдВрддрд┐рдд" рд╣реИрдВ рдЬреЛ рдЧрд▓рддреА рд╕реЗ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рд╕рднреА рдЙрдкрднреЛрдХреНрддрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ .
  • рдЖрдк рдПрдХ рд╢реИрд▓реАрдЧрдд рд╕рдореНрдореЗрд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдЯ рдирд┐рдпрдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ
  • рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ "рдЧрд▓рддреА рд╕реЗ" рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реАрд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реЛрдЧрд╛, рдПрдХ рдЕрдЬреАрдм рддрд░рд╣ рдХрд╛ рд╣реИред рдореИрдВ рдпрд╣ рднреА рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╡рд░реНрдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рдВрднрд╡" рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд╢рд╛рдпрдж рдпрд╣ рд╕рдВрджрд┐рдЧреНрдз рд╣реИред
  • рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЛ рд╕реАрд▓ рдХрд░рдиреЗ рдХреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рддреАрди рдХрд╛рд░рдг рд╣реИрдВ: рд╕реБрд░рдХреНрд╖рд╛, рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЖрд╢рдпред рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдмрдирд╛рдо рд▓рд╛рдн рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЕрдиреНрдп рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХреЗрд╡рд▓ 1/3 рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред

рдЖрдк рдЗрди рд╕рднреА рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВ рдХрд┐ рдХреИрд╕реЗ final рдХреА рдХрдореА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрдкрдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛ рд░рд╣реА рд╣реИред

рдЯреАрдПрд╕ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдареЛрд╕ рддрд░реНрдХ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ

рдмрд╕ рдПрдХ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ -100 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ ред рдЙрд╕ рдкреЛрд╕реНрдЯ рд╕реЗ

рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ, рдкреНрд░рд╢реНрди рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ "рдмрд╛рд╣рд░" рдпрд╛ "рдЫреЛрдбрд╝ рджрд┐рдпрд╛" рдХреНрдпреЛрдВред рдЙрд╕ рд╢рдмреНрдж рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдордиреЗ рдПрдХ рдореМрдЬреВрджрд╛ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХреА (рд╕реА ++ рдФрд░ рдЬрд╛рд╡рд╛ рдпрд╣рд╛рдВ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ), рдФрд░ рдлрд┐рд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЧрдП рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдкрд╕рдВрдж рдЖрдпрд╛ред рдФрд░, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХрд┐ рднрд╛рд╖рд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реАрдорд┐рдд рдЬрдЯрд┐рд▓рддрд╛ рдмрдЬрдЯ рд╣реИред рд╣рдо рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рд╣рд░ рдЕрдЧрд▓реЗ рдХрд╛рдо рдХреЛ 0.1% рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╣рд░ рджреВрд╕рд░реА рд╕реБрд╡рд┐рдзрд╛ рдереЛрдбрд╝реА рдХрдард┐рди, рдереЛрдбрд╝реА рдзреАрдореА, рдереЛрдбрд╝реА рдХрдо рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рдПред рдпрд╣рд╛рдВ рджрд░рд╡рд╛рдЬреЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛ рдХреЗ рдкрд╛рд╕ рд╣реИ рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕реА # рдХреЗ рдкрд╛рд╕ рд╣реИ рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдВ рд╣реЛрдЧреА рдпрд╛ рдЖрдк рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рд╕реНрд╡рд┐рдЪ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ ред рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдФрд░ рднрд╡рд┐рд╖реНрдп рдкрд░ рдЙрдирдХреЗ рдкреВрд░реЗ рдмреЛрдЭ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

@RyanCavanaugh рдЬрдмрдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдирд┐рд░реНрдгрдп рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдЪрд╛рд░рд╢реАрд▓ рдФрд░ рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рднрд╛рд╖рд╛ рдХреЛ рджреБрдмрд▓рд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреНрдп рд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛рдУрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИрдВ, рдпрд╛ рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВред

@RyanCavanaugh

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣рд╛рдВ рдЗрд╕ рдордВрдЪ рдореЗрдВ рдмрд┐рдВрджреБ рд╣реИ .. "рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред"

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдФрд░ рдмрд╕ "рдпрд╣рд╛рдБ рдЕрдиреБрддреНрдкрд╛рджрдХ рд╢рд┐рдХрд╛рдпрдд рдЪрд▓ рд░рд╣реА рд╣реИ" рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ: рдЕрдВрддрд┐рдо рдХреАрд╡рд░реНрдб рд╕рднреА рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ, рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рдеред

рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ OOP рдХреАрд╡рд░реНрдб рд╕реВрдк рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдмреЗрд╣рддрд░ рд░рдЪрдирд╛ рдпрд╛рдВрддреНрд░рд┐рдХреА рд╣реИрдВ ...

рдЬреИрд╕реЗ рдЬрдм рдЖрдк final рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд░рд╛рд╕рдд рдкрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣рд╛рдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рдбрд╛рд▓реЗрдВ)
(рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛)

рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдмрд┐рдВрджреБ рдкрд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреАрдПрд╕ рдЬреНрдпрд╛рджрд╛рддрд░ "рдЖрдЬ рдХреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдм" рдпрд╛ рдЙрд╕ рдкреНрд░рднрд╛рд╡ рдХреЗ рд▓рд┐рдП рдХреБрдЫ (рдПрдХ рд▓рд╛ рдмреЗрдмреЗрд▓) рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЧрддрддрд╛ рдкрд░рдд рд╣реЛрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реИ, рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХрд┐ рдпрд╣ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдЙрдВрдЯрд░ рддрд░реНрдХ рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдЯрд▓рд┐рди рдЬреЗрдПрд╕ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреЗ рд▓реЛрдЧ рдЖрдирдВрдж рд▓реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ рдЬреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ)ред

рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред

@RyanCavanaugh

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдЙрдард╛рдП рдЧрдП рдмрд┐рдВрджреБрдУрдВ рдкрд░...

рдХрдХреНрд╖рд╛рдПрдВ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рд╣реИрдВ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ ред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ final рдмрд┐рдирд╛ рдХрдХреНрд╖рд╛рдПрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИрдВ, рддреЛ рдпрд╣ TC39 рд╕рдорд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЙрдард╛рдиреЗ рдпрд╛ es-рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред рдпрджрд┐ рдХреЛрдИ рднреА TC39 рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдпрд╛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдХрд┐ final рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ 0.7 рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж, IIRC рдпрд╣ ES3-ES5 рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЙрд╕ рд╕рдордп рдХрдХреНрд╖рд╛рдПрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рдереАрдВред рд╡рд╣реА рддрд░реНрдХ рд╕рдЬреНрдЬрд╛рдХрд╛рд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ - рд╡реЗ ES рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдб рдкрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдВред

рдПрдХ рд╕рдореБрджрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдпрд╣ рддрд░реНрдХ рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд░реНрдЧ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ final ред рдПрдХ рдХрдВрдкрд╛рдЗрд▓-рдЯрд╛рдЗрдо рдЪреЗрдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛, рдЙрд╕реА рддрд░рд╣ рдЬреЛ рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд┐рдлрд╛рдпрд░ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓ рдЯрд╛рдЗрдо рдЪреЗрдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ; рдЖрдЦрд┐рд░рдХрд╛рд░, рд╡реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рднреА рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрднреА рднреА рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред

рдпрджрд┐ final рдПрдХ ES рд╕реБрд╡рд┐рдзрд╛ рдмрди рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рдВрднрд╡рддрдГ рдЖрдк final рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ES* рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрддреНрд╕рд░реНрдЬрдХ рдХреЗ рдЙрд╕ рдмрд┐рдЯ рдХреЛ рдкреБрди: рд╕рдХреНрд░рд┐рдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрд╕реА рдореЗрдВ рдЬреЛ рдЖрдкрдиреЗ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛, рдЬрдм рдЙрдиреНрд╣реЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) ES6 рдореЗрдВ)?

рдпрджрд┐ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдкрд░ new рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдирд╛ рдХрд╛рдиреВрдиреА рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ-рд╕реЗ-рдПрдХ рд░рдирдЯрд╛рдЗрдо рдкрддреНрд░рд╛рдЪрд╛рд░ рд╣реИред рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреА рдзрд╛рд░рдгрд╛ рдЬреЛ new 'd рд╣реЛ рд╕рдХрддреА рд╣реИ рд▓реЗрдХрд┐рди super 'd рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ

рджреЛрдмрд╛рд░рд╛, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕рдореБрджрд╛рдп рдЖрдкрд╕реЗ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЖрдк рдпрд╣рд╛рдВ рдХреБрдЫ рдЬрд╛рджреВ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдкрд░ final рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рд╣реИ, рдпрд╣ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ", рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рд╕рдВрдХрд▓рди-рд╕рдордп рдХреА рдмрд╛рдзрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧреАред

рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ OOP рдХреАрд╡рд░реНрдб рд╕реВрдк рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдмреЗрд╣рддрд░ рд░рдЪрдирд╛ рдпрд╛рдВрддреНрд░рд┐рдХреА рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рд╕реА # рдФрд░ рдЬрд╛рд╡рд╛ рдХреЗ рд╣рд░ рдПрдХ рдХреАрд╡рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд╕рдВрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рд╕рдореБрджрд╛рдп рдореЗрдВ рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╣реИ: "рд╡рд┐рд░рд╛рд╕рдд рдкрд░ рд░рдЪрдирд╛ рдХрд╛ рдкрдХреНрд╖ рд▓реЗрдВ", рд╣рд╛рд▓рд╛рдВрдХрд┐ "рдкрдХреНрд╖" рдХрд╛ рдЕрд░реНрде рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рдПрдХ рдХрдВрдмрд▓ рдХрдерди рдХреЗ рд░реВрдк рдореЗрдВ abstract рдХрдХреНрд╖рд╛рдУрдВ (рдЬреЛ рдХрд┐ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ") рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ final рдХрдХреНрд╖рд╛рдПрдВ?

рдЖрдк "рдЪрд╛рд╣рд┐рдП-рдЕрдВрддрд┐рдо" рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рдХреЛ рддреБрдЪреНрдЫ рд░реВрдк рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдЪрд┐рдВрддрд┐рдд" рд╣реИрдВ рдЬреЛ рдЧрд▓рддреА рд╕реЗ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рд╕рднреА рдЙрдкрднреЛрдХреНрддрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ .

рд╕реА # рдФрд░ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрддрд░ рдкрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП sealed рдФрд░ final рд╣реИред

рдпрджрд┐ рдореЗрд░реЗ рд╕рднреА рдЙрдкрднреЛрдХреНрддрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ рдореБрдЭреЗ рдХреЗрд╡рд▓ final рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╣реЛрдЧрд╛; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, private рдпрд╛ protected рд╕рджрд╕реНрдпреЛрдВ рддрдХ abstract рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред

рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рд╕реЗ рднрд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рднреА рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ) рдмрд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдЧреИрд░-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрдкрднреЛрдХреНрддрд╛ рдпрдерд╛рд╕рдВрднрд╡ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВ?

рдЖрдк рдПрдХ рд╢реИрд▓реАрдЧрдд рд╕рдореНрдореЗрд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдЯ рдирд┐рдпрдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА рдЖрдкрдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рд▓рд┐рдВрдЯрд░ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрднреА рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ; рдпрд╣ рдПрдХ рдЙрдкрд╛рдп рд╣реИред

рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ "рдЧрд▓рддреА рд╕реЗ" рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реАрд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реЛрдЧрд╛, рдПрдХ рдЕрдЬреАрдм рддрд░рд╣ рдХрд╛ рд╣реИред рдореИрдВ рдпрд╣ рднреА рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╡рд░реНрдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рдВрднрд╡" рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд╢рд╛рдпрдж рдпрд╣ рд╕рдВрджрд┐рдЧреНрдз рд╣реИред

рдЕрдЪреНрдЫреЗ/рдорд╣рд╛рди рдбреЗрд╡рд▓рдкрд░ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рддрд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ред рдЗрд╕рд╕реЗ рдХрдо рдФрд░ рдЖрдк рдПрдХ "рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ" рдорд╛рдирд╕рд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕рдордЭреЗ рдмрд┐рдирд╛ рдХрд┐ рдХреНрдпреЛрдВред

рдХреНрдпрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди рдкреВрдЫрдиреЗ рд╕реЗ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдП ред

рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЛ рд╕реАрд▓ рдХрд░рдиреЗ рдХреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рддреАрди рдХрд╛рд░рдг рд╣реИрдВ: рд╕реБрд░рдХреНрд╖рд╛, рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЖрд╢рдпред рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдмрдирд╛рдо рд▓рд╛рдн рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЕрдиреНрдп рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХреЗрд╡рд▓ 1/3 рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред

рддрд░реНрдХрд╕рдВрдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрдирдореЗрдВ рд╕реЗ рджреЛ рдХрд╛рд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛: рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдЗрд░рд╛рджрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЧрд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдХрд▓рди рд╕рдордп рдЬрд╛рдВрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рдХ рд╕реНрддрд░ рдкрд░

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ final рдирд╣реАрдВ рд╣реЛрдиреЗ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдореЗрд░реА рдХреНрд╖рдорддрд╛ рдХреЛ рдиреБрдХрд╕рд╛рди рд╣реЛ рд░рд╣рд╛ рд╣реИ, рди рд╣реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдХреНрд╖рд╛рдПрдВ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЕрдиреБрдкрдпреЛрдЧреА рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ final рдПрдХ "рдЖрд╡рд╢реНрдпрдХ" рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрдЬрд╛рдп "рдЕрдЪреНрдЫрд╛ рд╣реЛрдирд╛" рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдореБрдЦреНрдп рд╢рд┐рдХрд╛рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рдореЗрдВ abstract рдФрд░ _open_ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рд░рд╛рд╕рдд рдФрд░ рдмрд╣реБрд░реВрдкрддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рд╣рдореЗрдВ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдЪрд┐рддреНрд░ рдХреЛ рдПрдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдФрд░ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рддрд░реАрдХреЗ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рдореБрджрд╛рдп рдЪрд╛рд╣рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд░реНрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╢рдмреНрджрд╛рд░реНрде рдФрд░ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рдореВрд▓реНрдп рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдХреНрдпреЛрдВрдХрд┐ рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ рдПрдХ "рдЕрдЪреНрдЫрд╛ рд╣реИ", рдЗрд╕реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ" рд╕реНрдерд┐рддрд┐ред

рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ рдЯреЛрдкрд┐рдпрд╛рдБ рд╣реИрдВ; рдЗрд╕ рд╕рдордп рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ C# рд╣реИрдЯ, рдПрдХ рдХреЛрдЯрд▓рд┐рди рд╣реИрдЯ рдФрд░ рдПрдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдЯ рд╣реИред

  • рдореЗрд░реА рдХреЛрдЯрд▓рд┐рди рдЯреЛрдкреА рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ final рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрдХреНрд╖рд╛рдПрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рд╣реЛрддреА рд╣реИрдВред
  • рдореЗрд░реА рд╕реА # рдЯреЛрдкреА рдХреЗ рд╕рд╛рде, рдореИрдВ рдЖрджрдд рдХреА рдмрд╛рдд рдХреЗ рд░реВрдк рдореЗрдВ sealed рдХрд░рддрд╛ рд╣реВрдВ, рдЕрдкрдиреЗ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭреЗ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рд┐рдП ред рдЕрдзрд┐рдХ рдмрд╛рд░ рдирд╣реАрдВ, C# рдХрдХреНрд╖рд╛рдПрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ sealed рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рдЕрдХреНрд╕рд░ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдореЗрд░реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреЛрдкреА рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЫрд┐рдкрд╛рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА (рдФрд░ рд╕рдореБрджрд╛рдпреЛрдВ) рд░рд╛рдп рдореЗрдВ, рднрд╛рд╖рд╛ рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред

рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдПрдХ рдореЗрдЬ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреИрдареА рдФрд░ abstract рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА, рддреЛ рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рд╣рд╛рде рдЙрдард╛рдпрд╛ рдФрд░ рдХрд╣рд╛ "рд▓реЗрдХрд┐рди final рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?"

@RyanCavanaugh рд╣рдо рдореИрдВ рдЖрдкрдХреА рдмрд╛рддреЛрдВ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдпрд╣ рдПрдХ рдЧрд▓рддрдлрд╣рдореА рдереА (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдХреИрд╕реЗ рд╕рдордЭрд╛рдпрд╛)

@ Series0ne рд╕рд╛рд░рд╛рдВрд╢ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЗрд░рд╛рджреЗ рдЬреЗрдПрд╕ рдореЗрдВ рдЕрдВрддрд┐рдо рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд░рддреЗ рдереЗ (рдмрд┐рд▓реНрд▓реА рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЯреНрд░реЗрди рдорд▓рдмреЗ рд╣реЛрдЧрд╛) рд▓реЗрдХрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдпрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП: рдирд╣реАрдВ, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ' рдРрд╕рд╛ рдордд рдХрд░реЛред рдФрд░ рдпрд╣ рдПрдкреАрдЖрдИ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╢рд╛рдпрдж рдЙрди рд╡рд░реНрдЧ (рд╕реНрдерд┐рд░рддрд╛, рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдг рдЖрджрд┐ рдХреЗ рд▓рд┐рдП) рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рднреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╛рдЗрд▓реЛрдВ/рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдирд╣реАрдВред

рдХреНрдпрд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛: рд╣рд╛рдБ, рдХреБрдЫ рддрдХрдиреАрдХ рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕рдХреА рд╡рд╛рдХрдИ рдЬрд░реВрд░рдд рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХреБрдЫ рдорд╛рдореВрд▓реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдЗрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЙрдард╛ рд╕рдХрддреА рд╣реИ рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдВрддрд┐рдо/рдореБрд╣рд░рдмрдВрдж рдХреАрд╡рд░реНрдб рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдЫ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ: рдмрдЧ рдлрд┐рдХреНрд╕, рдкреИрдЪ, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиред

рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╕рднреА рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдХрд░ рдлрд╛рдЗрдирд▓ рдХрд╛ рдЕрдкрдорд╛рдирдЬрдирдХ рдЙрдкрдпреЛрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред IMO рдХреЛ рдПрдХ ** рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рджрд░реНрдж рдкреНрд░рджрд╛рди рдХрд░рдирд╛ред рдореИрдВ рдПрдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рд╡рд┐рд░рд╛рд╕рдд рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдореЗрдВ рдХреЛрдИ рднреА рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ "рд╕реБрд░рдХреНрд╖рд╛" рдХреЗ рдХрд╛рд░рдг рдкрд╛рдЧрд▓ рд╣реЛ рдЧрдП рдереЗред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рдЙрдкрдирд╛рдо рдпрд╛ рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ рд╕рд┐рд░реНрдл рдЙрдХреНрдд рд╡рд░реНрдЧ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ред

рдЗрд╕рдХреЗ рдмрд╛рдж рдмрд╕ рдореИрдВ рдЕрднреА рдЦреБрдж рдХреЛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдЧрд▓рдд рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд░рд╣реЗрдВ :)

рдЖрд╣ рдЕрдЧрд░ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдореИрдВ ES4 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдкрдврд╝ рд░рд╣рд╛ рдерд╛ (рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЕрднреА рднреА рдПрдХ рдмрдЪреНрдЪрд╛ рдерд╛ рдЬрдм рдорд╕реМрджрд╛ рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдореЗрдВ рдерд╛) рдФрд░ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИред

рдФрд░ рдпрд╣ рдпрд╣рд╛рдБ рдорд╕реМрджреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ:
https://www.ecma-international.org/activities/Languages/Language%20overview.pdf

A class that does not explicitly extend any other class is said to extend the class Object. As a consequence, all the classes that exist form an inheritance hierarchy that is a tree, the root of which is Object. A class designated as final cannot be extended, and final methods cannot be overridden: class C { final function f(n) { return n*2 } } final class D extends C { function g() { return 37 } }

рдЗрд╕рд▓рд┐рдП рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рдЦреЛрдЬрд╢рдмреНрдж рдХреЛ рдПрдХреНрдорд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪреМрдереЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдирд┐рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдЬреЗрдПрд╕ рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдПрдХреАрдХрд░рдг рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ, рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╣ рд╣реИ рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХреАрдХреГрдд рд╡рд░реНрдЧ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ?

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдмрд╕ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рднрд╛рдЧ рдЧрдпрд╛ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдпрд╣ рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ this рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдШреВрдорддрд╛ рд╣реИ:

abstract class TileEntity {
    //constructor, other methods...
    abstract cloneAt(x: number, y: number): this;
}

рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдореЗрд░рд╛ рдЗрд░рд╛рджрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдерд╛ рдХрд┐ рдЯрд╛рдЗрд▓рдПрдВрдЯрд┐рдЯреА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВ (рдФрд░ рдЗрд╕рд▓рд┐рдП рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВ) рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдЯрд╛рдЗрд▓рдПрдВрдЯрд┐рдЯреА рдХреЛ рдХреБрдЫ рдмрджрд▓реЗ рд╣реБрдП рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ x рдФрд░ y ) рдЙрдкрд╡рд░реНрдЧ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд╛рдиреЗ рдмрд┐рдирд╛ред рдореИрдВ рдпрд╣реА рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рд╕рд╣реА рдврдВрдЧ рд╕реЗ) рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред

class TurretTileEntity extends TileEntity {
    //constructor, other methods...
    cloneAt(x: number, y: number): this {
        return new TurretTileEntity(x, y, /* ... other properties */);
    }
}

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХрд┐ _never_ TurretTileEntity рдХрд╛ рдЙрдкрд╡рд░реНрдЧ рд╣реЛрдЧрд╛, this рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдХреЛ рдХреЗрд╡рд▓ TurretTileEntity рдкреНрд░рдХрд╛рд░ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрд╕ рдХрдореА рдХрд╛ рдкреНрд░рднрд╛рд╡ рдиреНрдпреВрдирддрдо рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЛ <any> рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣, рд╡рд╕реНрддреБрдирд┐рд╖реНрда рд░реВрдк рд╕реЗ, рдПрдХ рдкреНрд░рддрд┐рд░реВрдкрдг, рдФрд░ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдЕрдзрд┐рдХ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдВрддрд┐рдо/рд╕реАрд▓рдмрдВрдж рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рджрд┐рд▓рдЪрд╕реНрдкреА рд╕реЗ рдмрд╛рд╣рд░, рдЬрдм рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдПрдХ рдореЗрдЬ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмреИрдареА рдФрд░ рдЕрдореВрд░реНрдд рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА, рддреЛ рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЕрдкрдирд╛ рд╣рд╛рде рдЙрдард╛рдпрд╛ рдФрд░ рдХрд╣рд╛ "рд▓реЗрдХрд┐рди рдлрд╛рдЗрдирд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛"?

рд╣рд╛рдВред рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рдХреЛрдИ рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, "рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдореЗрдВ рдпрд╣ рджреВрд╕рд░рд╛ рдХреАрд╡рд░реНрдб рднреА рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛!" рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдордЬрдмреВрдд рдмрд┐рдВрджреБ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рднрд╛рд╖рд╛ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛рдУрдВ рдкрд░ final рдЗрд╕ рд╢рд┐рд╡рд┐рд░ рдореЗрдВ рд╣реИ - рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ final рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ final рд╡рд┐рдзрд┐рдпреЛрдВ рдпрд╛ рдЧреБрдгреЛрдВ рдХреА рднреА "рдЖрд╡рд╢реНрдпрдХрддрд╛" рд╣реЛрдЧреАред рд╕реНрдХреЛрдк рд░реЗрдВрдЧрдиреЗ рд╡рд╛рд▓реА рдХреЛрдИ рднреА рдЪреАрдЬрд╝ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрджреЗрд╣ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдорд╛рдиреА рдЬрд╛рддреА рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЕрдВрддрд┐рдо/рд╕реАрд▓рдмрдВрдж рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЕрдВрддрд┐рдо/рдореБрд╣рд░рдмрдВрдж рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдСрдл-рд╡рд┐рд╖рдп рдЪрд░реНрдЪрд╛ рд╣реБрдИ рд╣реИ рдЬреЛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред

mhegazy рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ https://github.com/Microsoft/TypeScript/issues/9264 рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рдХреНрдпрд╛ рдХреЛрдИ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрд┐рдо/рдореБрд╣рд░рдмрдВрдж рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреБрдкреНрд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдирд╣реАрдВ рд╣реИ?

@crcla рдКрдкрд░ @RyanCavanaugh рдХреА рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЕрдиреНрдп рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо/рд╕реАрд▓рдмрдВрдж рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рдЕрдВрддрд┐рдо/рд╕реАрд▓рдмрдВрдж рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реИред рджреЛрдиреЛрдВ рдХрд╛рдлреА рдирд┐рдХрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╖рдп рд╣реИрдВред

рдореИрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ final рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ Won't fix ред

рд▓реЗрдмрд▓ рдХреЛ рд╡рд╛рдкрд╕ In Discussion рдмрджрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдХреГрдкрдпрд╛!

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХреНрд▓рд╛рд╕ рдЧрд▓рддреА рд╕реЗ рдореЗрд░реА рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдИ рднреА private constructor , Object.seal рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЗрд╕реЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рдЬреАрд╡рд┐рдд рдпрд╛ рдорд░реЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ: рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдПрдкреАрдЖрдИ рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬрд┐рд╕реЗ рдЙрдкрднреЛрдХреНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╣реИрдВред рд░рд┐рдПрдХреНрдЯ рдХреЗ рдмреБрд░реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рди рдХрд░реЗрдВред рдмрд╕ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╕рд░рд▓ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдЗрд╕ рдУрдУ рдмрдХрд╡рд╛рд╕ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ: рдЕрддреАрдд рдореЗрдВред

рдЕрдм рдбрд╛рдЙрдирд╡реЛрдЯреНрд╕ рд▓рд╛рдПрдВ

рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЪрд░реНрдЪрд╛ рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдХреИрд╕реЗ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реИ? рдмреЗрд╢рдХ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореВрд▓реНрдп рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдореИрдВ рдПрдХ рдкреНрд▓рдЧрдЗрди рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХреБрдЫ рдврд╛рдВрдЪреЗ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЙрдк-рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдХреЗ рдФрд░ рдЕрдореВрд░реНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╡рд╣ рдЗрди рдЕрдореВрд░реНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░рддреА рд╣реИ (рдФрд░ рдХреНрдпреЛрдВ!) рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди/рд▓реЙрдЧрд┐рди/рдЬрд╛рдВрдЪ рд╣реЛрддреА рд╣реИред

@pelotom рдпрджрд┐ рдЖрдк
рджреВрд╕рд░реЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ (рдЧреИрд░-рдУрдУрдкреА) рдкреИрдЯрд░реНрди рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдХреЗ, рдЖрдк рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдУрдУрдкреА рдХреА рдирд┐рдВрджрд╛ рдХрд░рддреЗ рд╣реИрдВред рдХрдо рд╕реЗ рдХрдо рд╕реБрд╕рдВрдЧрдд рд░рд╣реЗрдВ :)

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ final рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝рдирд╛ рдХреЛрдИ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ @thorek , рдореЗрд░реЗ рдФрд░ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдЬреИрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдЧреАред

рдЕрдЧрд░ рдХреЛрдИ рдУрдУрдкреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдХрд░рдиреЗ рджреЗрдВред

рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдУрдУрдкреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВ, рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рдмрд╣рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЧреИрд░-рдореМрдЬреВрдж рдУрдУрдкреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рднрд╛рд╖рд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рднрд╛рд╖рд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рднрд╡рд┐рд╖реНрдп рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рджрд░ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рд╣рд░ рдкреБрд░рд╛рдиреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░реЗрдЧрд╛)ред рддреЛ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдмрдЬрдЯ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЛрдВ рдкрд░ рдЦрд░реНрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ!

fwiw, рд╣рдо рд╢рд╛рдпрдж рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ (google) рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ @ final рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░ рд╕рдХреЗ:\

рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ _ final_ рдЬреЛрдбрд╝рдирд╛ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ R&D рдЯреАрдо TS рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдЯреАрдореЗрдВ рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдпреЗ рдЦреЛрдЬрд╢рдмреНрдж рдРрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдЬреЛрдЦрд┐рдо рд╕реНрдерд┐рд░рддрд╛ рдХрд╛ (рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг) рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред
рдмрдбрд╝реА рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдХреАрд╡рд░реНрдб рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЗрдореНрд╣реЛред

@dimiVergos рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдФрд░ рдореИрдВ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдорд╛рдирддрд╛ рд╣реВрдВред рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рдкрдХреНрд╖рдкрд╛рддреА рд▓рдЧ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕ рдХреАрд╡рд░реНрдб рдХрд╛ рдПрдХрдорд╛рддреНрд░ (рдпрджреНрдпрдкрд┐ рдЕрддреНрдпрдзрд┐рдХ) рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рд╣реИред

рдореИрдВ рдЗрд╕ рдкрд░ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдБ!

рдореИрдВ рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдВрддрд┐рдо рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реВрдВ (рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЛ рдЧрд▓рддреА рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП)ред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рдЯрд┐рдХрдЯ рд╣реИ? рдЯрд┐рдХрдЯ https://github.com/Microsoft/TypeScript/issues/9264 рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рддреЛ рдореИрдВ "рдЕрдВрддрд┐рдо рддрд░реАрдХреЛрдВ" рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╡реЛрдЯ рдХрд░реВрдВ? рдпрд╛ рдХреНрдпрд╛ рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдЗрд╕реЗ рд╡реЛрдЯ рджрд┐рдпрд╛? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдо рд╢реАрд░реНрд╖рдХ рдореЗрдВ "рд╡рд┐рдзрд┐рдпрд╛рдБ" рдХреИрд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЕрднреА рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ? рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖рдХ рднреНрд░рд╛рдордХ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛рдУрдВ рддрдХ рд╣реА рд╕реАрдорд┐рдд рд╣реИ рд▓реЗрдХрд┐рди рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдВ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣ рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдВрддрд┐рдо рддрд░реАрдХреЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореИрдВрдиреЗ рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рд╡рд┐рдлрд▓рддрд╛ рд╕реЗ рдкреНрд░рддрд┐рд░рдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдереЛрдбрд╝реА рдорджрдж рдХрд░рддрд╛ рд╣реИ:

class parent {
  public get finalMethod(): () => void {
    return () => {
      // final logic
    };
  }
}

class child extends parent {
  // ERROR "Class 'parent' defines instance member accessor 'finalMethod', but extended class 'child' defines it as instance member function"
  public finalMethod(): void { }
}

рдпрд╣рд╛рдВ final рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рд╢реНрд╡ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдВрджрд░реНрдн рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП React.Component рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

interface FooStore{
  foo: string;
}

const {Provider, Consumer} = React.createContext<FooStore>({
  foo: 'bar';
});

abstract class FooConsumerComponent<P, S> extends React.Component<P, S> {

  // implement this instead of render
  public abstract renderWithStore(store: FooStore): JSX.Element;

  public final render() {
    return (
      <Consumer>
        {
          (store) => {
            return this.renderWithStore(store);
          }
        }
      </Consumer>
    );
  }
}

final рдмрд┐рдирд╛ render() рдкрджреНрдзрддрд┐ рдкрд░, рдХреБрдЫ рднреА рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдм рдХреБрдЫ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рдирдорд╕реНрддреЗ, рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣ рдореБрдЭреЗ рдХрдо рд╕реЗ рдХрдо рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП "рдЕрдВрддрд┐рдо" рдпрд╛ "рдореБрд╣рд░рдмрдВрдж" рдХреАрд╡рд░реНрдб рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреАрд╡рд░реНрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдореВрд▓реНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреЛрдб рдмреНрд▓реЙрдХ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдореЗрдВ) рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдореБрдЭреЗ рдорд┐рд▓рд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рдордХрд╛рдЬ рд╡рд┐рдзрд┐ рд╕рдЬрд╛рд╡рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдЬреИрд╕реЗ:
function sealed(target, key,descriptor){ descriptor.writable = false; // Prevent method to be overriden }

рдлрд┐рд░ рдЕрдкрдиреЗ "рдЖрдзрд╛рд░" рд╡рд░реНрдЧ рдореЗрдВ, рд╡рд┐рдзрд┐ рдУрд╡рд░рд░рд╛рдЗрдб рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг:

class MyBaseClass {
<strong i="10">@sealed</strong>
public MySealedMethod(){}

public OtherMethod(){}

...
}

рдЗрд╕ рддрд░рд╣ 'MySealedMethod' рдЙрдк рд╡рд░реНрдЧ рдореЗрдВ (рдЖрд╕рд╛рдиреА рд╕реЗ) рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рд╣реЛ рд╕рдХрд╛ред рдЙрджрд╛рд╣рд░рдг:

class AnotherClass extends MyBaseClass {
public MySealedMethod(){} ====>> ERROR at RUNTIME (not at compile time)
}

рдЕрд╕рд▓ рдореЗрдВ, рдЗрд╕ рдХрд╛рдордХрд╛рдЬ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ "рдореБрд╣рд░рдмрдВрдж" рдХреЗрд╡рд▓ рд░рдирдЯрд╛рдЗрдо рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрд╕реЛрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐) рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдирд╣реАрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рдзрд┐ рдЧреБрдг рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ)

@RyanCavanaugh

рд╣рд╛рдВред рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рдХреЛрдИ рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, "рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдореЗрдВ рдпрд╣ рджреВрд╕рд░рд╛ рдХреАрд╡рд░реНрдб рднреА рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛!" рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдордЬрдмреВрдд рдмрд┐рдВрджреБ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рднрд╛рд╖рд╛ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рддрд░реНрдХ рдХреЛ рдлреАрдЪрд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдмрд┐рдВрджреБ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкреВрдЫрдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП _рдпрд╣ рд▓реЛрдХрдкреНрд░рд┐рдп рдХреНрдпреЛрдВ рд╣реИ_, рдФрд░ рдлрд┐рд░ рдзреНрдпрд╛рди рд╕реЗ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ рдФрд░ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпрд╛ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рддрд░реНрдХ рджрд┐рдП рдЧрдП рд╣реИрдВред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рддрд░реНрдХ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлреАрдЪрд░ рд░реЗрдВрдЧрдирд╛ рд╣реИ, рдпрд╛ рдХреБрдЫ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдлреНрд░рд┐рдВрдЬ рдлреАрдЪрд░ рдорд╛рдирддреЗ рд╣реИрдВ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рд╣рдо рдЖрдкрдХрд╛ рд╡рд┐рдЪрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВ рдЗрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╣рдо рд╕рднреА рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ _by design_ рдХрдХреНрд╖рд╛ рдХреЛ рд╕реАрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
рдпрджрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝реА рдЬрд╛рддреА, рддреЛ рдХреНрдпрд╛ рдпрд╣ рд╣рдореЗрдВ рдХреБрдЫ рдирдпрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА? (рдЬреИрд╕рд╛ рдХрд┐, рдХреБрдЫ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрдорд╛рдг рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ)
рдпрджрд┐ рд╕реБрд╡рд┐рдзрд╛ рдиреЗ рд╣рдореЗрдВ рдХреБрдЫ рдирдпрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ?
рдХреНрдпрд╛ рд╕реАрд▓рдмрдВрдж рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рднрд╛рд╖рд╛ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмрдврд╝ рдЬрд╛рдПрдЧреА?
рдХреНрдпрд╛ рд╕реАрд▓рдмрдВрдж рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рдВрдХрд▓рдХ рдЬрдЯрд┐рд▓рддрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмрдврд╝ рдЬрд╛рдПрдЧреА?

рдЗрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ, рдореИрдВ рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╕реАрд▓рдмрдВрдж рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд░рди-рдЯрд╛рдЗрдо рдЪреЗрдХ рднреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣рдо рд╕рднреА рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ Javascript рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдлрд╡рд╛рдИрдЖрдИ: рдЕрдЧрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдХрд╛рдЙрдВрдЯрд░ рдлреАрдЪрд░-рд░реЗрдВрдЧрдирд╛ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рд┐рд░реНрдл рдХрдВрдмрд▓ рдмрдпрд╛рди рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдерд╛ рддреЛ рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

@asimonf рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЬреЛ рдХреБрдЫ рднреА рдХрд╣рд╛ рд╣реИ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рджреНрд╡рд╛рд░рд╛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЖрдкрдХреЛ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП "рдЕрдзрд┐рдХ рджрд┐рдЦрд╛рдПрдВ" рдЕрдиреБрднрд╛рдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА) рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рд╡рд╛рд▓рд╛ред

рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдорди рдХреЛ рдХреНрдпрд╛ рдмрджрд▓реЗрдЧрд╛? рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ

рдпрд╣рд╛рдВ рдкрд░рд┐рджреГрд╢реНрдп рдЬрд┐рд╕реЗ рдХреАрд╡рд░реНрдб рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╡рд╣ рд╣реИ рдЬрд╣рд╛рдВ рдХрд┐рд╕реА рдХреЛ рдЧрд▓рддреА рд╕реЗ рдХрд┐рд╕реА рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдЖрдк рдЧрд▓рддреА рд╕реЗ рдХрдХреНрд╖рд╛ рд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ? рдЗрд╕реЗ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдХреНрд╖рд╛рдПрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЗрддрдиреА рдирд╛рдЬреБрдХ рд╣реЛрддреА рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рдЙрдкрд╡рд░реНрдЧ рдХреЛ рдЕрдкрдиреЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреА рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдВрдмрдВрдзреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдЪрд╛рд╣рд┐рдП , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓рд┐рдЦрдирд╛, рдФрд░ рдЙрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдмрд╕ "рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдЙрдкрд╡рд░реНрдЧ рди рдХрд░реЗрдВ" рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╛ рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдлреИрдХреНрдЯреНрд░реА рдореЗрдердб рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпрд╣ рдХреАрд╡рд░реНрдб рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рд╕реНрдерд┐рддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдЬреЛ рдЖрдкрдХреЛ рдмрддрд╛ рд░рд╣реЗ рдереЗ рдХрд┐ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдХреБрдЫ рдЙрдк-рд╡рд░реНрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХреЗ рдХрд┐ рдЗрд╕реЗ рд╕реАрд▓ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдереАред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рд╕реБрдкрд░ рдЬреАрдирд┐рдпрд╕ рд╣реВрдВ! рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддреА рд╣реИ, рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпреЗ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдкреНрд░рд╢реНрди рдкреВрдЫрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛

рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдорд▓рд╛ рдЬреЛ рдореИрдВ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рд╣реИ рдЬреЛ рдХрднреА рднреА рд╕реБрдкрд░ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдмреЗрд╢рдХ рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЕрд╕рд▓реА рд╕рдорд╛рдзрд╛рди рд╕реБрдкрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЙрдк рд╡рд┐рдзрд┐ рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрдЧреАред https://github.com/Microsoft/TypeScript/issues/21388

рдЪреВрдВрдХрд┐ рдореИрдВ рдПрдХ рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрдирд░ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдХрдорд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдЕрдореВрд░реНрдд рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдВрддрд┐рдо рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдирд┐рд░рд╛рд╢рд╛ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдбрд╛рд▓рдиреЗ рдХреЗ рдЖрджрд░реНрд╢ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХрдо рдХреЗ рд╕рд╛рде рдЬрд╛рдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдХрдХреНрд╖рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рд╢рд╛рдпрдж рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдкрдврд╝ рдкрд╛рдПрдВрдЧреЗред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдКрдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдХрд┐ рдХрдм/рдХрд╣рд╛рдБ final рди рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ _рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рди_ рдФрд░ _рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрд░рдХреНрд╖рд╛_ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрди рдХреА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ/рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ/рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдпрд╛ рдпрд╣ рдЦрд░рд╛рдм рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рдореИрдВ рдЧреБрдВрдЬрд╛рдЗрд╢ рд░реЗрдВрдЧрдиреЗ рд╕реЗ рдбрд░рдиреЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЯреАрдПрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╡рд╣ рд╕рдм рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рдореБрджрд╛рдп рдЪрд╛рд╣рддрд╛ рд╣реИред

рдмрд╣рд╕ рдореЗрдВ рдЕрдкрдирд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдирд╛ рдЕрдВрдЧреВрдард╛ рдкреИрдорд╛рдиреЗ рдХреЗ рд╣рд╛рдВ-рдкрдХреНрд╖ рдкрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдлреАрдЪрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рдорд░реНрдерди рдореЗрдВ рдЕрдЪреНрдЫреЗ рддрд░реНрдХреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдлрд┐рд░ рднреА рдореИрдВ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рддрд░реНрдХ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ:

  • рдЗрд╕рд╕реЗ рд╕реНрдХреЛрдк рд░реЗрдВрдЧрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рдкреНрд░рдмрдВрдзрдиреАрдп рд╣реИ)
  • рд▓реЛрдЧ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреВрдЫреЗрдВрдЧреЗ (рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рднрд╛рд╖рд╛ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдиреВрдиреА рдорд┐рд╕рд╛рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ)
  • рдпрд╣ рджрдХреНрд╖рддрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рдЯреАрдПрд╕ рдЯреАрдо рдЦрд░рд╛рдм-рдЧрдзреЗ рд╕реЗ рднрд░реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрдиреАрдп рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛)
  • рд░рд╛рдп "OOP рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ" рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЯреАрдПрд╕ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЦрддрд░реЛрдВ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рди рд╣реА рдЗрд╕рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб; рд╡реЗ рд╕рднреА рд░рд╛рдЬрдиреАрддрд┐рдХ рд▓рдЧрддреЗ рд╣реИрдВ (рд╢рд╛рдпрдж рджрдХреНрд╖рддрд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрдк рд▓реЛрдЧреЛрдВ рдкрд░ рдмрд╣реБрдд рднрд░реЛрд╕рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рд╕рд╛рде рд╣реА рдорд╛рдореВрд▓реА рджрдХреНрд╖рддрд╛ рдореЗрдВ рдХрдореА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХ/рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЕрдирдЬрд╛рдиреЗ рд╡рд┐рд░рд╛рд╕рдд рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рдЙрдбрд╝рд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реЛрдЧреА) .

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд░рдЪрдирд╛рддреНрдордХ рд╣реИ! рдЯреАрдПрд╕ рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕реБрдзрд╛рд░рддреЗ рд╣реБрдП рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ!

рдореИрдВ

--рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ--

@RyanCavanaugh рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ:

So what problem is being solved?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╡рд╣ рдКрдкрд░ рдХрдИ, рдХрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИред рдореЗрд░рд╛ рдпрд╣ рдЕрдкрдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╡рд╛рд▓ рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рддрд░реНрдХреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХрд╛ рджрд┐рдорд╛рдЧ "рдирд╣реАрдВ" рдкрд░ рд╕реЗрдЯ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рдЙрд╕рдХреЗ рд╕рд╛рде рдЕрдирд╛рджрд░ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдЗрддрдирд╛ рд╣реИ рдХрд┐, рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдпрд╣ рдзрд╛рдЧрд╛ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдпрд╣ рд╣рд▓ рдХрд░реЗрдЧрд╛ред

рдХрд┐рд╕реА рддрд░рд╣ рдореИрдВ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдЪреВрдХ рдЧрдпрд╛, рдЬреЛ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрдВрднреАрд░ рдЪрд┐рдВрддрд╛ рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рджреЛрдмрд╛рд░рд╛, рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рджрдХреНрд╖рддрд╛ рдХреА рдЪрд┐рдВрддрд╛ рдПрдХ рддрд░рдл рд╣реИ (рдЪреВрдВрдХрд┐ рдЯреАрдПрд╕ рджрдХреНрд╖рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЯреАрдПрд╕ рдЯреАрдо рдХрд╛ рдХрд╛рдо рд╣реИ), рдлрд╛рдЗрдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рддрд░реНрдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ (рдореЗрд░реА рд╕рдмрд╕реЗ рд╡рд┐рдирдореНрд░ рд░рд╛рдп рдореЗрдВ)ред

рд╣рд╛рд▓ рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪрд░реНрдЪрд╛ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐рдпреЛрдВ (рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдХрдо) рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд░рд╣реА рд╣реИред рдЕрдВрддрд┐рдо рддрд░реАрдХреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХ рд░реБрдЪрд┐ рд╣реИрдВред рдореИрдВрдиреЗ рдЕрднреА рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк @RyanCavanaugh рдХреА рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ "рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА" рд▓рд┐рдВрдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╡рд╣ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐ рдЪрд░реНрдЪрд╛ рдСрдл-рд╡рд┐рд╖рдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ @mhegazy рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЯрд┐рдХрдЯ рд╕рд╣реА рдЬрдЧрд╣ рд╣реИ (#9264 рдмрдВрдж рдХрд░рддреЗ рд╕рдордп)ред рдЗрд╕рд▓рд┐рдП рдПрдХ рдиреАрдЪ рдЕрдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЪрдХрд┐рдд рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдЕрдВрддрд┐рдо рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдВ рд╕реЗ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рд┐рдП/рдорддрджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред

@cbutterfield
рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВрдиреЗ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╢реЗрдЦрд╝реА рдХреЗ рдбрд░ рд╕реЗ рдЕрдкрдиреА рдкреЛрд╕реНрдЯ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдзрд╛рдЧрд╛ #9264 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд┐рд▓рд╛ рдФрд░ рдпрд╣рд╛рдВ
@RyanCavanaugh
@mhegazy
рдЙрдкрд░реЛрдХреНрдд рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЬрд╣рд╛рдВ _is_ рдЕрдВрддрд┐рдо рддрд░реАрдХреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣реА рд╡рд╣ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред

рдореЗрд░реА рднрд╛рд░реА рдЕрд╕реНрд╡реАрдХреГрдд рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдкреАрдЫреЗ рдореБрдбрд╝рдХрд░ рджреЗрдЦреЗрдВ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдиреЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рдЕрдкрдирд╛ рдЬреЛрдбрд╝реЗрдВ!) рдореБрдЭреЗ рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реБрдП рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ _no long_ рдПрдХ class -рдЖрдзрд╛рд░рд┐рдд API рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдХреЗ рдПрдХ рдмреБрд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░! рд╣реБрдХ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде, рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдЕрдкрдиреЗ рд╣реЛрд╢ рдореЗрдВ рдЖ рдЧрдИ рд╣реИ рдФрд░ рдПрдХ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛рдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде, рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЖрдЦрд┐рд░реА рдХрд╛рд░рдг рд╡рд╛рд╖реНрдкрд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдЪреНрдЫреА рдЫреБрдЯрдХрд╛рд░рд╛ рд╣реИред рдореИрдВ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛: рдЬреЛ рдХреБрдЫ рднреА рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрдирдХреЗ рдмрд┐рдирд╛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдЬреЗрдПрд╕ рдФрд░ рдЯреАрдПрд╕ рдХрд╛ рднрд╡рд┐рд╖реНрдп рд╡рд░реНрдЧрд╣реАрди рд╣реИ, рдкреНрд░рд╢рдВрд╕рд╛ рд╣реЛ!

@cbutterfield рдореИрдВрдиреЗ рдЙрд╕ рдкрд░ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛, рдФрд░ рдЕрдЧрд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрджреНрджрд╛ #9264 рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢реАрд░реНрд╖рдХ Suggestion: Final keyword for classes and methods рдмрджрд▓ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдЕрдВрддрд┐рдо рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ) рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдкрд╣рд▓реА рдкреЛрд╕реНрдЯред

@mhegazy рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реБрдП :
рдЬрд╛рд╡рд╛ рдФрд░/рдпрд╛ рд╕реА# рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП final рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЕрдВрддрд┐рдо рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдореВрд▓реНрдп рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдо рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдмрд┐рдирд╛ рдлрд╛рдЗрдирд▓ рдХреЗ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВред рдореИрдВрдиреЗ рдХрдИ рд╡рд░реНрд╖реЛрдВ рддрдХ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХрдИ рдЯреАрдореЛрдВ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╣рдордиреЗ рд░рдирдЯрд╛рдЗрдо рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХрднреА рднреА рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛рдУрдВ рдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ; рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ OOP рдбрд┐рдЬрд╛рдЗрди рдореБрд╣рд╛рд╡рд░рд╛ рд╣реИред рдХрднреА-рдХрднреА рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдореЗрд░реА рдХрдХреНрд╖рд╛ рдпрд╛ рд╡рд┐рдзрд┐ рдХреЛ рдмрд╛рд╣рд░реА рдЙрдкрд╡рд░реНрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд/рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЪрд╛рд╣реЗ рд╡рд╣ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ, рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдПрдкреАрдЖрдИ рд╢реЛрд░ рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдПрдкреАрдЖрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рдЬрдЯрд┐рд▓ рдПрдкреАрдЖрдИ рдХреЛ рдЧрд▓рдд рд╕рдордЭрдиреЗ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛред

рд╣рд╛рдВ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди final рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпрдорд╛рди рдПрдкреАрдЖрдИ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрдм рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕рд╛рдл рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдПрдкреАрдЖрдИ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ рд╣реЛред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд▓рдЧрднрдЧ 3 рд╡рд░реНрд╖ рдкреБрд░рд╛рдиреА рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ final рдХреАрд╡рд░реНрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ abstract рдХреАрд╡рд░реНрдб рд╣реИред

рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рд╣рдо рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рдЕрдореВрд░реНрдд рдХреАрд╡рд░реНрдб рдХреА рддрд░рд╣ рдЙрдкрдпреЛрдЧреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ рдЬреЛ final рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд╛рдн рдХреЛ рджреГрдврд╝рддрд╛ рд╕реЗ рджрд┐рдЦрд╛рдПрдЧрд╛:

abstract class A {
  protected abstract myVar: string;

  protected abstract myFunction(): void;
}

class B extends A {
  protected readonly myVar: string = "toto";

  constructor() {
    super();
    this.myFunction();
  }

  protected myFunction() {
    console.log(this.myVar);
  }
}

class C extends B {
  constructor() {
    super();
  }

  protected myFunction() {
    console.log("tata");
  };

  public callFunction = () => {
    this.myFunction();
  }
}

const myB = new B(); // toto

const myC = new C(); // toto
myC.callFunction(); // tata

рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж рдкрд░рд┐рдгрд╛рдо:

toto
tata

рддреЛ рдЗрд╕ рдХреЛрдб рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ A рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рдЧреБрдг рд╣реИрдВ, рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╡рд░реНрдЧ рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗ, рд▓реЗрдХрд┐рди рд╣рдо рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд░реНрдЧ рдХреЛ рдЙрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░рдиреЗ рджреЗрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
protected рдХреАрд╡рд░реНрдб рд░рдЦрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рдо рдЕрднреА рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ рдХреНрдпрд╛ рд╣реБрдЖ рдЕрдЧрд░ рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП readonly рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рддрд░реАрдХреЗ рдЧреБрдг рд╣реИрдВ)?

class B extends A {
  [...]

  protected readonly myFunction = () => {
    console.log(this.myVar);
  }
}

class C extends B {
  protected myVar: string = "I am not protected that much";
  [...]

  protected myFunction = () => { // using the readonly keyword doesn't prevent any modification
    console.log("tata"); // If you launch this code, tata will still be logged in the console.
  };
}

(рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЛрдб tsc рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ)
рддреЛ рдЕрдм рд╣рдореЗрдВ рджреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ:

  • рд╣рдо рдЕрдкрдиреА B рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рд░рдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  • рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рднреА рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ readonly , рдЕрдкрдиреЗ рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗ рдЧреБрдг рдФрд░ рд╣рд╛рдБ, рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореВрд▓ рдкреНрд░реЙрдкрд░реНрдЯреА рд╣рдо рдкреНрд░рдпреЛрдЧ рдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ рд╣реИ private рдХреЗ рдмрдЬрд╛рдп protected C рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдорд╛рди рдкрд╣реБрдВрдЪ рдкреНрд░рдХрд╛рд░/рджреГрд╢реНрдпрддрд╛ рдирд╣реАрдВ рд╣реИред

рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдо рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рд╢реЛ рдпрд╛ рдЕрдВрддрд┐рдо рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреА рддрд░рд╣ рд╕реАрд▓ ) рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрд╕реЗ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ "рд╕реБрд░рдХреНрд╖рд╛ рдЙрд▓реНрд▓рдВрдШрди" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдЬрдм рд╣рдо рдПрдХ рд╕рдВрд░рдХреНрд╖рд┐рдд рд░реАрдбреЛрдирд▓реА рдорд╛рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛ рдореИрдВ readonly рдХреАрд╡рд░реНрдб рдХреЗ рд╕рддреНрдпрд╛рдкрди рдкрд░ рдмрд╣рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓реВрдВрдЧрд╛ private , protected рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рд╕рд╛рдорд╛рди рдХреЗ рд╕рд╛рде рдХреАрд╡рд░реНрдбред

рдЯреАрдПрд▓; рдбреЙ : final рдХреАрд╡рд░реНрдб рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ readonly рд╕рддреНрдпрд╛рдкрди рдХрд┐рд╕реА рднреА рдЕрдирдзрд┐рдХреГрдд рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрдд рд╣реЛрдЧреА)

рддреАрди рд╕рд╛рд▓ рдмрд╛рдж ... рдпрд╣ рдХрд┐рддрдирд╛ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИред

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

Java:
final class SomeClass { ... }
PHP:
final class SomeClass { ... }
C#:
sealed class SomeClass {...}
C++:
class SomeClass final { ... }
Delphi:
type SomeClass = class sealed() ... end;

рдЗрд╕рд▓рд┐рдП, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдУрдУрдкреА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдореМрдЬреВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдУрдУрдкреА рдХреЗ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рддрд░реНрдХ рд╕реЗ рдЖрддреА рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЭреЗ рдЯреАрдПрд╕ рдХреЗ рджреЗрд╡ рдиреЗрддреГрддреНрд╡ рдХреЛ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдЙрджреНрдзреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐рдпреЛрдВ рдпрд╛ рдЧреБрдгреЛрдВ рдХреА рднреА "рдЖрд╡рд╢реНрдпрдХрддрд╛" рд╣реЛрдЧреАред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдбрдВрдмрдирд╛рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЗрдПрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдХреАрд╡рд░реНрдб рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдФрд░ рдпрджрд┐ рдЖрдк рдзреЛрдЦрд╛ рджреЗрддреЗ рд╣реИрдВ рддреЛ рд╡рд┐рдзрд┐рдпрд╛рдВ), рддреЛ рдпрд╣ рдПрдХ рд╕реБрдВрджрд░ рдЧреВрдВрдЧрд╛ рдмрд┐рдВрджреБ рд╣реИред

рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛ +40 рдбрд╛рдЙрдирд╡реЛрдЯ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рди рдХрд░рдиреЗ рджреЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдореБрджрд╛рдп рдЙрд╕рдХреЗ рд╕рд╛рде рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реИ, рдЖрдЧреЗ рдХреА рдЧреВрдВрдЧрд╛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рд╕рд▓рд╛рд╣ рд╣реЛрдЧреАред

рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЬрд╝реЛрд░ рд╕реЗ рдХрд╣реЗрдВ рддрд╛рдХрд┐ рддрдХрдиреАрдХреА рд╕рдорд╛рдЪрд╛рд░ рдЗрд╕реЗ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░ рд╕рдХреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЫрд┐рдкреА рд╣реБрдИ рдмреБрд░реА рдЪрд░реНрдЪрд╛ рд╣реИред рдЖрдк рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕рдореБрджрд╛рдп рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╕рдореБрджрд╛рдп рдХреЛ рдпрд╣ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛ +40 рдбрд╛рдЙрдирд╡реЛрдЯ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рди рдХрд░рдиреЗ рджреЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдореБрджрд╛рдп рдЙрд╕рдХреЗ рд╕рд╛рде рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реИ, рдЖрдЧреЗ рдХреА рдЧреВрдВрдЧрд╛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рд╕рд▓рд╛рд╣ рд╣реЛрдЧреА

рдореИрдВ "рдПрдХ рдЖрджрдореА" рдирд╣реАрдВ рд╣реВрдБред рдЬрдм рдореИрдВ рдпрд╣рд╛рдВ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдХреА рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╣реЛрддрд╛ рд╣реИред рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреАрдо рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХрдИ рдмрд╛рд░ рджреЗрдЦрд╛ рд╣реИ, рдФрд░ рд╣рд░ рдмрд╛рд░ рдПрдХ рд╣реА рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрддреЗ рд╣реИрдВред рдЙрд╕ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╣рд╕ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред

рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдореБрджрд╛рдп рдХреЛ рдпрд╣ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВред

рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдпрд╣реАрдВ рд╣реИ: рдЖрдк рд╣рдорд╛рд░реЗ рддрд░реНрдХ рдХреА рдореЗрд░реА рд╕рдВрдХреНрд╖рд┐рдкреНрддреАрдХрд░рдг "рдЧреВрдВрдЧрд╛" рдмреБрд▓рд╛ рдФрд░ рдореБрдЭреЗ (рдФрд░ рдЯреАрдо рдкрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ) рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗред рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реБрди рд░рд╣реЗ рд╣реИрдВред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдЧрдВрдз рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдбрдВрдмрдирд╛рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рддрдВрддреНрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ (рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рднрдпрд╛рдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд░рд╣ рд╕рдХрддрд╛ рд╣реИ ) рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреБрдЫ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд┐рдирд╛ рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЯреАрдПрд╕ рдХреА рд▓рдЧрднрдЧ рдЖрдзреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдлрд┐рд░, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдЙрдЪрд┐рдд рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

GitHub рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдпрд╣рд╛рдБ рдмрд╣реБрдд рд╕рд╛рд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдЫреБрдкрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрддреАрдд рдореЗрдВ рджреА рдЧрдИ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ (рд╕рд╛рде рд╣реА рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд) рдХреЛ рджреЛрдмрд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдиреАрдЪреЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рднреА рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред


рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рд╣рдордиреЗ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдереА рддрдм рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

  • рдХрдХреНрд╖рд╛рдПрдВ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рд╣реИрдВ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ ред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ final рдмрд┐рдирд╛ рдХрдХреНрд╖рд╛рдПрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИрдВ, рддреЛ рдпрд╣ TC39 рд╕рдорд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЙрдард╛рдиреЗ рдпрд╛ es-рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИред рдпрджрд┐ рдХреЛрдИ рднреА TC39 рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдпрд╛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдХрд┐ final рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдпрджрд┐ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдкрд░ new рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдирд╛ рдХрд╛рдиреВрдиреА рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ-рд╕реЗ-рдПрдХ рд░рдирдЯрд╛рдЗрдо рдкрддреНрд░рд╛рдЪрд╛рд░ рд╣реИред рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреА рдзрд╛рд░рдгрд╛ рдЬреЛ new 'd рд╣реЛ рд╕рдХрддреА рд╣реИ рд▓реЗрдХрд┐рди super 'd рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ
  • рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ OOP рдХреАрд╡рд░реНрдб рд╕реВрдк рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдмреЗрд╣рддрд░ рд░рдЪрдирд╛ рдпрд╛рдВрддреНрд░рд┐рдХреА рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рд╕реА # рдФрд░ рдЬрд╛рд╡рд╛ рдХреЗ рд╣рд░ рдПрдХ рдХреАрд╡рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  • рдЖрдк "рдЪрд╛рд╣рд┐рдП-рдЕрдВрддрд┐рдо" рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рдХреЛ рддреБрдЪреНрдЫ рд░реВрдк рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдЪрд┐рдВрддрд┐рдд" рд╣реИрдВ рдЬреЛ рдЧрд▓рддреА рд╕реЗ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рд╕рднреА рдЙрдкрднреЛрдХреНрддрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ .
  • рдЖрдк рдПрдХ рд╢реИрд▓реАрдЧрдд рд╕рдореНрдореЗрд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдЯ рдирд┐рдпрдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ
  • рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ "рдЧрд▓рддреА рд╕реЗ" рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реАрд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реЛрдЧрд╛, рдПрдХ рдЕрдЬреАрдм рддрд░рд╣ рдХрд╛ рд╣реИред рдореИрдВ рдпрд╣ рднреА рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╡рд░реНрдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рдВрднрд╡" рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд╢рд╛рдпрдж рдпрд╣ рд╕рдВрджрд┐рдЧреНрдз рд╣реИред
  • рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЛ рд╕реАрд▓ рдХрд░рдиреЗ рдХреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рддреАрди рдХрд╛рд░рдг рд╣реИрдВ: рд╕реБрд░рдХреНрд╖рд╛, рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЖрд╢рдпред рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдмрдирд╛рдо рд▓рд╛рдн рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЕрдиреНрдп рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХреЗрд╡рд▓ 1/3 рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред

рдЯреАрдПрд╕ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдареЛрд╕ рддрд░реНрдХ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ

рдмрд╕ рдПрдХ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ -100 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ ред рдЙрд╕ рдкреЛрд╕реНрдЯ рд╕реЗ

рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ, рдкреНрд░рд╢реНрди рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ "рдмрд╛рд╣рд░" рдпрд╛ "рдЫреЛрдбрд╝ рджрд┐рдпрд╛" рдХреНрдпреЛрдВред рдЙрд╕ рд╢рдмреНрдж рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдордиреЗ рдПрдХ рдореМрдЬреВрджрд╛ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХреА (рд╕реА ++ рдФрд░ рдЬрд╛рд╡рд╛ рдпрд╣рд╛рдВ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ), рдФрд░ рдлрд┐рд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЧрдП рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдкрд╕рдВрдж рдЖрдпрд╛ред рдФрд░, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХрд┐ рднрд╛рд╖рд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реАрдорд┐рдд рдЬрдЯрд┐рд▓рддрд╛ рдмрдЬрдЯ рд╣реИред рд╣рдо рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рд╣рд░ рдЕрдЧрд▓реЗ рдХрд╛рдо рдХреЛ 0.1% рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╣рд░ рджреВрд╕рд░реА рд╕реБрд╡рд┐рдзрд╛ рдереЛрдбрд╝реА рдХрдард┐рди, рдереЛрдбрд╝реА рдзреАрдореА, рдереЛрдбрд╝реА рдХрдо рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рдПред рдпрд╣рд╛рдВ рджрд░рд╡рд╛рдЬреЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛ рдХреЗ рдкрд╛рд╕ рд╣реИ рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕реА # рдХреЗ рдкрд╛рд╕ рд╣реИ рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдВ рд╣реЛрдЧреА рдпрд╛ рдЖрдк рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рд╕реНрд╡рд┐рдЪ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ ред рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдФрд░ рднрд╡рд┐рд╖реНрдп рдкрд░ рдЙрдирдХреЗ рдкреВрд░реЗ рдмреЛрдЭ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдорди рдХреЛ рдХреНрдпрд╛ рдмрджрд▓реЗрдЧрд╛? рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ

рдпрд╣рд╛рдВ рдкрд░рд┐рджреГрд╢реНрдп рдЬрд┐рд╕реЗ рдХреАрд╡рд░реНрдб рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╡рд╣ рд╣реИ рдЬрд╣рд╛рдВ рдХрд┐рд╕реА рдХреЛ рдЧрд▓рддреА рд╕реЗ рдХрд┐рд╕реА рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдЖрдк рдЧрд▓рддреА рд╕реЗ рдХрдХреНрд╖рд╛ рд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ? рдЗрд╕реЗ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдХреНрд╖рд╛рдПрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЗрддрдиреА рдирд╛рдЬреБрдХ рд╣реЛрддреА рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рдЙрдкрд╡рд░реНрдЧ рдХреЛ рдЕрдкрдиреЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреА рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдВрдмрдВрдзреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдЪрд╛рд╣рд┐рдП , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓рд┐рдЦрдирд╛, рдФрд░ рдЙрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдмрд╕ "рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдЙрдкрд╡рд░реНрдЧ рди рдХрд░реЗрдВ" рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╛ рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдлреИрдХреНрдЯреНрд░реА рдореЗрдердб рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд┐рд╕реА рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдПрдХрдорд╛рддреНрд░ рд╕рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рдореЗрд╢рд╛ рдЙрд╕ рд╡рд░реНрдЧ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ ред рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЛ рдХреЗрд╡рд▓ рдХреЛрдбрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реА рдмрд╛рдзрд╛рдПрдВ рд╣реИрдВред рдпрджрд┐, рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ , рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рдиреА рд╣реИ, рддреЛ рдЪрд░рдг рддреАрди рдореЗрдВ рд╕реНрдерд┐рд░ рдкреНрд░рд╡рд░реНрддрди рдХреНрдпрд╛ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпрд╣ рдХреАрд╡рд░реНрдб рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рд╕реНрдерд┐рддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рдЬреЛ рдЖрдкрдХреЛ рдмрддрд╛ рд░рд╣реА рдереА рдХрд┐ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдХреБрдЫ рдЙрдк-рд╡рд░реНрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХреЗ рдХрд┐ рдЗрд╕реЗ рд╕реАрд▓ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдереАред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рд╕реБрдкрд░ рдЬреАрдирд┐рдпрд╕ рд╣реВрдВ! рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддреА рд╣реИ, рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпреЗ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдкреНрд░рд╢реНрди рдкреВрдЫрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛

рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЬрд╝реЛрд░ рд╕реЗ рдХрд╣реЗрдВ рддрд╛рдХрд┐ рддрдХрдиреАрдХреА рд╕рдорд╛рдЪрд╛рд░ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░ рд╕рдХреЗрдВ

рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ рдХрд┐ рд╣рдо рднрд╛рд╖рд╛ рдХреЛ рдХреИрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ ; рдЧреИрд░-рдЧреЛрд▓ рдирдВрдмрд░ рдПрдХ рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рдмреЛрд▓рддрд╛ рд╣реИред


рдпрд╣рд╛рдВ рдХрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдореМрдЬреВрдж рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдордЬрдмреВрдд рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд░рд┐рдХреНрдд рд╕реНрд▓реЗрдЯ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдРрд╕реЗ рджрд░реНрдЬрдиреЛрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдк рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рд╣реИред

рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдХреБрдЫ рдХреАрд╡рд░реНрдб рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд░реВрдк рд╕реЗ final рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд░рдирдЯрд╛рдЗрдо рдЬрд╛рдВрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдЖрдзрд╛рд░-рд╡реНрдпреБрддреНрдкрдиреНрди рдЕрдиреБрдмрдВрдз рдХрд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реВрдХреНрд╖реНрдо рдкрд╣рд▓реВ рд╣реИ "рд╡реНрдпреБрддреНрдкрдиреНрди рдХрдХреНрд╖рд╛рдПрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ ". рдпрд╣ рдХрдИ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдХрд┐ final рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдЙрд╕ рдХреАрд╡рд░реНрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рди рддреЛ рдЬрдЯрд┐рд▓рддрд╛ рдмрдирд╛рдо рдореВрд▓реНрдп рдмрд╛рд░ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ)ред

рддреЛ рдлрд┐рд░, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдЙрдЪрд┐рдд рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдЬрдм рд╣рдо рдлреАрдбрдмреИрдХ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдордЬрдмреВрдд рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:

  • рдореИрдВ рдЗрд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╡реНрдпрдХреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
  • рдореЗрд░рд╛ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдпрд╣ (рд╕реВрдХреНрд╖реНрдо) рддреНрд░реБрдЯрд┐ рдереА
  • рдЗрд╕ рдХреЛрдб рдХрд╛ рдЖрд╢рдп рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

final рдЗрдиреНрд╣реЗрдВ рд╣рд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдПрдХ рд╕рдВрд╢реЛрдзрдХ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ "рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рджреЛ рдмрд╛рд░ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ" рдпрд╛ "рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЧрд▓реЗ async рдЯрд┐рдХ рддрдХ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ"ред рдХрд▓реНрдкрдирд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд╣рдордиреЗ рдХрднреА рднреА рдлреАрдбрдмреИрдХ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдЬреИрд╕реЗ "рдореИрдВрдиреЗ рдШрдВрдЯреЛрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрд╕ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдк-рд╡рд░реНрдЧреАрдп рдирд╣реАрдВ рдерд╛" - рдХреЛрдИ рдХрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ 'рд╡рд╛рдЯ' рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╕рдВрд╢реЛрдзрдХ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдерд┐рддрд┐ fs.FSwatcher final ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдиреЛрдб рд▓реЗрдЦрдХ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗред рддреЛ final рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдпрджрд┐ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ final , рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ final рдХреА рдХрдореА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрддрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ рдмрд╕ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдкреВрд░реЗ рдЦрдВрдб рдХреЛ рдкрдврд╝рддрд╛ рд╣реВрдВ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдЪреБрдирд╛рд╡ рдкрд░ рдЯреАрдо рдХреЗ рдмрдпрд╛рди рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдореИрдВ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдКрдВрдЧрд╛

рдореИрдВ "рдПрдХ рдЖрджрдореА" рдирд╣реАрдВ рд╣реВрдБред рдЬрдм рдореИрдВ рдпрд╣рд╛рдВ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдХреА рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╣реЛрддрд╛ рд╣реИред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдореЗрдЧрд╛рдЬрд╝реА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдореБрджрд╛рдп рд╕реЗ рдЙрд╕реЗ рдмрд╣реБрдд рдмрдбрд╝реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓реАред

рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдлрд╛рдЗрдирд▓ рдХреЗ рдмрд┐рдирд╛ рдХрдХреНрд╖рд╛рдПрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ TC39 рд╕рдорд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЙрдард╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХреЛрдИ рднреА TC39 рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдпрд╛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд╛рдЗрдирд▓ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ final рдкрд╣рд▓рд╛ рдХрджрдо рд╣реИ рдХреНрдпреЛрдВрдХрд┐ private рдХреАрд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ https://github.com/tc39/proposal-private-methods

рдореБрдЭреЗ You should a comment to say *dont do this* рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╣ рд╣реИ, рдпрд╣ рдПрдХ рдлреЙрд░реНрдо Hey don't write down specific characters рдкрд░ рдХрд╣рдиреЗ рдЬреИрд╕рд╛ рд╣реИ, рдЖрдкрдиреЗ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рджреЗрд╡ рдХреЗ n ┬░ 1 рдирд┐рдпрдо рдХреЛ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ рдХрднреА рднрд░реЛрд╕рд╛ рди рдХрд░реЗрдВ ( рдФрд░ рд╡рд╣ рджреЗрд╡ рдЬреЛ рдЖрдкрдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛)

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдВрддрд┐рдо рдХреАрд╡рд░реНрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд░рдм рдбреЙрд▓рд░ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХреЗрд╕ рдЗрддрдиреЗ рдХреБрд╢рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рд╣реИрдВ, рдпрд╣ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕реАрдорд╛ рдЯреАрдПрд╕ рдФрд░ рдЬреЗрдПрд╕ рджреЛрдиреЛрдВ рд╕реЗ рд╣реИ рдФрд░ рд╡рд╣ рдЕрдЧрд░ рд▓реЛрдЧ рдЯреАрдПрд╕ рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдВрдХрд▓рди-рд╕рдордп рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рди рдХрд┐ рд░рди-рдЯрд╛рдЗрдо рдореЗрдВред рдЕрдЧрд░ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЪреАрдЬреЗрдВ рдЙрдбрд╝ рдЬрд╛рдПрдВ, рддреЛ рд╣рдо рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЯреАрдПрд╕ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХреЗрд╕ рд╣реИ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдореИрдВ final рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ: рдореИрдВ рдПрдХ рд▓реЙрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд┐рдзрд┐, рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдХреЛрдИ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗред

рдФрд░ рдЪреВрдВрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрд╕ рддрдХ рд╕реАрдорд┐рдд рд╣реИ, рд╕рдореБрджрд╛рдп рдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрд╕ рд╕реАрдорд╛ рд╕реЗ рдЖрдЧреЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореБрджреНрджрд╛ 3 рд╕рд╛рд▓ рд╕реЗ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓реЛрдЧ рдЕрднреА рднреА рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдпрд╣рд╛рдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрдХреНрд╖рд╛ рдФрд░/рдпрд╛ рд╡рд┐рдзрд┐ рдХреА рдореИрдиреНрдпреБрдЕрд▓ рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

рдЖрдкрдиреЗ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА/рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП JS рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ # рдХреАрд╡рд░реНрдб ( public / private рд╕реЗ рдХрдо рд╡рд░реНрдмреЛрдЬрд╝) рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИрдВред ), рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рд╕рдВрдкреВрд░реНрдг рднрд╛рд╖рд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реНрдгрддрд╛ рддрдм рдирд╣реАрдВ рд╣реИ рдЬрдм рдЖрдк рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рддрдм рд╣реИ рдЬрдм рдЖрдк рдЕрдм рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рд░рдирдЯрд╛рдЗрдо-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд╣реАрдВ рдХреНрдпреЛрдВрдХрд┐ рдмрд┐рдВрджреБ рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛), рдореЗрд░реЗ рдЕрддрд┐рдерд┐ рдмрдиреЗрдВред

рдореИрдВрдиреЗ рд╕реНрдерд┐рддрд┐ рдХреА рдХрдордЬреЛрд░реА (рд╡рд┐рдзрд┐рдпреЛрдВ/рдЧреБрдгреЛрдВ рдкрд░ рдФрд░ рд╡рд░реНрдЧ рдкрд░ рдирд╣реАрдВ) рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдЯреАрдПрд╕ рджреЗрд╡ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рддрд╛ рд╣реИ рдЙрд╕реЗ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣реА рдЪреАрдЬ рдХреА рд╕реБрдВрджрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

рд╡реИрд╕реЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рджреЗрд╡ рдЯреАрдо рдпрд╛ рдЖрдкрдХреЗ рдЦрд┐рд▓рд╛рдл рдХреЛрдИ рдирдлрд░рдд рдпрд╛ рдмреБрд░рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИред

рд╕рднреА рдорд╛рдиреНрдп рдмрд┐рдВрджреБ! рд▓реЗрдХрд┐рди, рдХреГрдкрдпрд╛ рдЪрд░реНрдЪрд╛ рдХреЛ рдмреАрдЪ рдореЗрдВ рдмрд╛рдВрдЯ рджреЗрдВ

рдП) рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ
рдмреА) рдЕрдВрддрд┐рдо рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рдЬрдмрдХрд┐ рдЖрдкрдХреЗ рд╕рднреА рддрд░реНрдХ a) рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдХреЛрдИ рднреА рд▓рдХреНрд╖реНрдп b рдирд╣реАрдВред

рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╣реЛрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдХрдИ рдмрд╛рд░ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЕрдм рддрдХ рдХреЗрд╡рд▓ рдпрд╣реА рдЙрддреНрддрд░ рд╕реБрдирд╛ рд╣реИ рдХрд┐ "рдУрдУрдкреА рдордд рдХрд░реЛ" - рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ (рдФрд░ рдХрдИ рдЕрдиреНрдп) рд╕рд╛рде рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛ред

рдПрдПрдо 28.01.2019 рдЙрдо 20:32 рд╕реНрдХреНрд░рд┐рдм рд░рдпрд╛рди рдХреИрд╡рд╛рдиреЙрдШ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com:

GitHub рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдпрд╣рд╛рдБ рдмрд╣реБрдд рд╕рд╛рд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдЫреБрдкрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрддреАрдд рдореЗрдВ рджреА рдЧрдИ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ (рд╕рд╛рде рд╣реА рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд) рдХреЛ рджреЛрдмрд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдиреАрдЪреЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рднреА рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред

рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рд╣рдордиреЗ рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдереА рддрдм рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛

рдХрдХреНрд╖рд╛рдПрдВ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рд╣реИрдВ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдлрд╛рдЗрдирд▓ рдХреЗ рдмрд┐рдирд╛ рдХрдХреНрд╖рд╛рдПрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ TC39 рд╕рдорд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЙрдард╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХреЛрдИ рднреА TC39 рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдпрд╛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд╛рдЗрдирд▓ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдкрд░ рдирдпрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдирд╛ рдХрд╛рдиреВрдиреА рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ-рд╕реЗ-рдПрдХ рд░рдирдЯрд╛рдЗрдо рдкрддреНрд░рд╛рдЪрд╛рд░ рд╣реИред рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреА рдзрд╛рд░рдгрд╛ рдЬреЛ рдирдИ рд╣реЛ рд╕рдХрддреА рд╣реИ рд▓реЗрдХрд┐рди рд╕реБрдкрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ
рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ OOP рдХреАрд╡рд░реНрдб рд╕реВрдк рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдмреЗрд╣рддрд░ рд░рдЪрдирд╛ рдпрд╛рдВрддреНрд░рд┐рдХреА рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рд╕реА # рдФрд░ рдЬрд╛рд╡рд╛ рдХреЗ рд╣рд░ рдПрдХ рдХреАрд╡рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЖрдк "рдЪрд╛рд╣рд┐рдП-рдЕрдВрддрд┐рдо" рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рдХреЛ рддреБрдЪреНрдЫ рд░реВрдк рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдЪрд┐рдВрддрд┐рдд" рд╣реИрдВ рдЬреЛ рдЧрд▓рддреА рд╕реЗ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рд╕рднреА рдЙрдкрднреЛрдХреНрддрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ .
рдЖрдк рдПрдХ рд╢реИрд▓реАрдЧрдд рд╕рдореНрдореЗрд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдЯ рдирд┐рдпрдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ
рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ "рдЧрд▓рддреА рд╕реЗ" рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реАрд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реЛрдЧрд╛, рдПрдХ рдЕрдЬреАрдм рддрд░рд╣ рдХрд╛ рд╣реИред рдореИрдВ рдпрд╣ рднреА рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╡рд░реНрдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рдВрднрд╡" рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд╢рд╛рдпрдж рдпрд╣ рд╕рдВрджрд┐рдЧреНрдз рд╣реИред
рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЛ рд╕реАрд▓ рдХрд░рдиреЗ рдХреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рддреАрди рдХрд╛рд░рдг рд╣реИрдВ: рд╕реБрд░рдХреНрд╖рд╛, рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЖрд╢рдпред рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдмрдирд╛рдо рд▓рд╛рдн рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЕрдиреНрдп рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХреЗрд╡рд▓ 1/3 рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред
рдЯреАрдПрд╕ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдареЛрд╕ рддрд░реНрдХ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ

рдмрд╕ рдПрдХ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ -100 https://blogs.msdn.microsoft.com/ericgu/2004/01/12/minus-100-points/ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВред рдЙрд╕ рдкреЛрд╕реНрдЯ рд╕реЗ

рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ, рдкреНрд░рд╢реНрди рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ "рдмрд╛рд╣рд░" рдпрд╛ "рдЫреЛрдбрд╝ рджрд┐рдпрд╛" рдХреНрдпреЛрдВред рдЙрд╕ рд╢рдмреНрдж рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдордиреЗ рдПрдХ рдореМрдЬреВрджрд╛ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХреА (рд╕реА ++ рдФрд░ рдЬрд╛рд╡рд╛ рдпрд╣рд╛рдВ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ), рдФрд░ рдлрд┐рд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЧрдП рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдкрд╕рдВрдж рдЖрдпрд╛ред рдФрд░, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХрд┐ рднрд╛рд╖рд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реАрдорд┐рдд рдЬрдЯрд┐рд▓рддрд╛ рдмрдЬрдЯ рд╣реИред рд╣рдо рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рд╣рд░ рдЕрдЧрд▓реЗ рдХрд╛рдо рдХреЛ 0.1% рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╣рд░ рджреВрд╕рд░реА рд╕реБрд╡рд┐рдзрд╛ рдереЛрдбрд╝реА рдХрдард┐рди, рдереЛрдбрд╝реА рдзреАрдореА, рдереЛрдбрд╝реА рдХрдо рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рдПред рдпрд╣рд╛рдВ рджрд░рд╡рд╛рдЬреЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛ рдХреЗ рдкрд╛рд╕ рд╣реИ рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕реА # рдХреЗ рдкрд╛рд╕ рд╣реИ рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдВ рд╣реЛрдЧреА рдпрд╛ рдЖрдк рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рд╕реНрд╡рд┐рдЪ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдФрд░ рднрд╡рд┐рд╖реНрдп рдкрд░ рдЙрдирдХреЗ рдкреВрд░реЗ рдмреЛрдЭ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдорди рдХреЛ рдХреНрдпрд╛ рдмрджрд▓реЗрдЧрд╛? рд▓реЛрдЧ рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреИрд╕рд╛ рдЙрд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрд┐рдо рдХреАрд╡рд░реНрдб рдЧрд╛рдпрдм рдерд╛ред

рдпрд╣рд╛рдВ рдкрд░рд┐рджреГрд╢реНрдп рдЬрд┐рд╕реЗ рдХреАрд╡рд░реНрдб рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╡рд╣ рд╣реИ рдЬрд╣рд╛рдВ рдХрд┐рд╕реА рдХреЛ рдЧрд▓рддреА рд╕реЗ рдХрд┐рд╕реА рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдЖрдк рдЧрд▓рддреА рд╕реЗ рдХрдХреНрд╖рд╛ рд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ? рдЗрд╕реЗ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдХреНрд╖рд╛рдПрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЗрддрдиреА рдирд╛рдЬреБрдХ рд╣реЛрддреА рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рдЙрдкрд╡рд░реНрдЧ рдХреЛ рдЕрдкрдиреЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреА рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдВрдмрдВрдзреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓рд┐рдЦрдирд╛, рдФрд░ рдЙрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдмрд╕ "рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдЙрдкрд╡рд░реНрдЧ рди рдХрд░реЗрдВ" рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╛ рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдлреИрдХреНрдЯреНрд░реА рдореЗрдердб рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд┐рд╕реА рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдПрдХрдорд╛рддреНрд░ рд╕рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рдореЗрд╢рд╛ рдЙрд╕ рд╡рд░реНрдЧ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЛ рдХреЗрд╡рд▓ рдХреЛрдбрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реА рдмрд╛рдзрд╛рдПрдВ рд╣реИрдВред рдпрджрд┐, рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЪрд░рдг рддреАрди рдореЗрдВ рд╕реНрдерд┐рд░ рдкреНрд░рд╡рд░реНрддрди рдХреНрдпрд╛ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпрд╣ рдХреАрд╡рд░реНрдб рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рд╕реНрдерд┐рддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдЬреЛ рдЖрдкрдХреЛ рдмрддрд╛ рд░рд╣реЗ рдереЗ рдХрд┐ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдХреБрдЫ рдЙрдк-рд╡рд░реНрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХреЗ рдХрд┐ рдЗрд╕реЗ рд╕реАрд▓ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдереАред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рд╕реБрдкрд░ рдЬреАрдирд┐рдпрд╕ рд╣реВрдВ! рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддреА рд╣реИ, рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпреЗ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдкреНрд░рд╢реНрди рдкреВрдЫрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреЛ рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?

рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЬрд╝реЛрд░ рд╕реЗ рдХрд╣реЗрдВ рддрд╛рдХрд┐ рддрдХрдиреАрдХреА рд╕рдорд╛рдЪрд╛рд░ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░ рд╕рдХреЗрдВ

рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ рдХрд┐ рд╣рдо рднрд╛рд╖рд╛ рдХреИрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals ; рдЧреИрд░-рдЧреЛрд▓ рдирдВрдмрд░ рдПрдХ рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рдмреЛрд▓рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдХрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдореМрдЬреВрдж рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдордЬрдмреВрдд рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд░рд┐рдХреНрдд рд╕реНрд▓реЗрдЯ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдРрд╕реЗ рджрд░реНрдЬрдиреЛрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдк рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рд╣реИред

рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдХреБрдЫ рдХреАрд╡рд░реНрдб рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╡рд┐рдзрд┐ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрд╕ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реБрдкрд░ https://github.com/Microsoft/TypeScript/issues/21388 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ C# рдФрд░ Java рдореЗрдВ рдпрд╣ рдХреАрд╡рд░реНрдб рд╣реЛрддрд╛, рддреЛ рд▓реЛрдЧ рдЙрд╕ рдХреАрд╡рд░реНрдб рдХреЛ рдЙрди рдЬрдЧрд╣реЛрдВ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ "рд╡реНрдпреБрддреНрдкрдиреНрди рдХрдХреНрд╖рд╛рдПрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА" рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╕-рд╡реНрдпреБрддреНрдкрдиреНрди рдЕрдиреБрдмрдВрдз рдХрд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реВрдХреНрд╖реНрдо рдкрд╣рд▓реВ рд╣реИред рдпрд╣ рдХрдИ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐ final рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдЙрд╕ рдХреАрд╡рд░реНрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рди рддреЛ рдЬрдЯрд┐рд▓рддрд╛ рдмрдирд╛рдо рдореВрд▓реНрдп рдмрд╛рд░ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ)ред

рддреЛ рдлрд┐рд░, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдЙрдЪрд┐рдд рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдЬрдм рд╣рдо рдлреАрдбрдмреИрдХ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдордЬрдмреВрдд рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:

рдореИрдВ рдЗрд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╡реНрдпрдХреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛
рдореЗрд░рд╛ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдпрд╣ (рд╕реВрдХреНрд╖реНрдо) рддреНрд░реБрдЯрд┐ рдереА
рдЗрд╕ рдХреЛрдб рдХрд╛ рдЖрд╢рдп рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
final рдЗрдиреНрд╣реЗрдВ рд╣рд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдПрдХ рд╕рдВрд╢реЛрдзрдХ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ "рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рдмрд╛рд░ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ" рдпрд╛ "рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЧрд▓реЗ async рдЯрд┐рдХ рддрдХ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ"ред рдХрд▓реНрдкрдирд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд╣рдордиреЗ рдХрднреА рднреА рдлреАрдбрдмреИрдХ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдЬреИрд╕реЗ "рдореИрдВрдиреЗ рдШрдВрдЯреЛрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрд╕ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдк-рд╡рд░реНрдЧреАрдп рдирд╣реАрдВ рдерд╛" - рдХреЛрдИ рдХрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ 'рд╡рд╛рдЯ' рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рднрд▓реЗ рд╣реА рд╕рдВрд╢реЛрдзрдХ рдореМрдЬреВрдж рд╣реЛ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рдХрдХреНрд╖рд╛рдПрдВ рдЕрдВрддрд┐рдо рд╣реЛрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ - рдЬреИрд╕реЗ fs.FSwatcher https://nodejs.org/api/fs.html#fs_class_fs_fswatcher final ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдиреЛрдб рд▓реЗрдЦрдХ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗред рддреЛ final рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдпрджрд┐ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдВрддрд┐рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ final рдХреА рдХрдореА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрддрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдХреНрд╕рд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕реАрдзреЗ рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЬрд╡рд╛рдм рд╣реИ, рдпрд╣ GitHub рдкрд░ рджреЗрдЦрдиреЗ https://github.com/Microsoft/TypeScript/issues/8306#issuecomment-458268725 , рдпрд╛ рдзрд╛рдЧреЗ рдореВрдХ https://github.com/notifications/unsubscribe-auth/AA3NA4o9wu54CcJyK1C8WHVjXIQwfmsUks5vH1A8gaJpZM4IP8M3 ред

рд╣рд╛рдБ, рдЪрд░реНрдЪрд╛ рдЕрдм рдЗрддрдиреА рдлреИрд▓ рдЧрдИ рд╣реИред рдореИрдВ рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рдПрдХ рдЯреНрд░реИрдХрд░ рдореЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдЖрдк рд╡реЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗ/рд╡реЗрдмрд╕реНрдЯреЙрд░реНрдо рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдХреНрд╖рд╛рдУрдВ рдФрд░/рдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рд▓реЛрдЧ final рджреЗрдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рдЗрд╕рдХреА рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдЕрдВрддрд┐рдо рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛

рдПрдХ рдЕрдореВрд░реНрдд рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдлрд╝реАрд▓реНрдб рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреАрд╡рд░реНрдб рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реА рддрд░рд╣ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред

рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рд╕рдВрд░рдЪрд┐рдд рдФрд░/рдпрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐рдпрд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдРрд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдЬреЛ рддреГрддреАрдп рдкрдХреНрд╖ рдкреНрд▓рдЧ рдЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЖрдк рд╕рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХреНрд░рдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмреАрдЪ рд╣реБрдХ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд▓рдЧрдЗрди рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рд╕реЗ рдЕрд╡рдЧрдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдлрд┐рд░ рднреА рдЗрд╕рдХреА рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЕрд╡рдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛, рд╡реЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХреНрд░рдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рднреАрддрд░ рдмрдЧ, рд╢реЛрд╖рдг рдпрд╛ рдЕрдиреНрдп рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдЬрдмрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реЛрдВрдЧреЗ, рд╡реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЬрдЯрд┐рд▓, рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдХрднреА-рдХрднреА рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ; рдЬрдмрдХрд┐ рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐рдпрд╛рдБ рдЗрд╕реЗ рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рддреА рд╣реИрдВ рдЬрдм рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд╛рде рд╣реА, рдЬрдмрдХрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рдпрд╣ рдЕрдиреНрдп рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред (рдЯреАрдо рдкрд░ рдирдпрд╛ рджреЗрд╡, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рдХреБрдЫ рддрд░реНрдХ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рд╣реИрдВ, рдорд╛рдирдХреАрдХрд░рдг рдХрд░рдирд╛ рдХрд┐ рдХреЛрдб рдХреИрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдЖрдзрд╛рд░рд┐рдд рддрд░реАрдХреЗ рдирд╣реАрдВ рдмрджрд▓реЗ рд╣реИрдВ, рдЖрджрд┐ред рд╕рднреА рдЗрд╕рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)

@RyanCavanaugh рдЬрдмрдХрд┐ рд░реЗрдВрдбрд░() рдлрд╛рдЗрдирд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдХрд┐рд╕реА рдиреЗ рднреА рдУрдкрди-рдХреНрд▓реЛрдЬреНрдб рд╕рд┐рджреНрдзрд╛рдВрдд (рдЕрдм SOLID рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рджреВрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд) рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдиреНрдп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдореЗрдВ рдУрдкрди-рдХреНрд▓реЛрдЬреНрдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ?

рдореБрдЭреЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП final рдЖрдПрдЧрд╛ (рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЧреБрдг рдФрд░ рдШреЛрд╖рдгрд╛рдПрдВ)ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░реЗрд╢рд╛рдиреА рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ - рд▓реЛрдЧ рдЧрд▓рддреА рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд░рд╣рддреЗ рд╣реИрдВ, рдпрд╣ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рдХрд┐ рдиреАрдЪреЗ рдПрдХ рдерд╛ ... рд╕рд╛рдорд╛рди рддреЛрдбрд╝ рд░рд╣рд╛ рдерд╛ ...

рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рддрд░реАрдХреЛрдВ рдХрд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡ рд╣реЛрдЧрд╛, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рдиреЗ рдмрддрд╛рдпрд╛ рд╣реИ, рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрдВрддрд┐рдо рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдерд╛ (#9264) рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдпрд╣ рдореБрджреНрджрд╛ рдЗрд╕реЗ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдо рдпрд╛ рддреЛ рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЙрд╕реЗ рдпрд╣рд╛рдБ рдареАрдХ рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореЗрд░реА рд╕реНрдерд┐рддрд┐ @ 0815fox рдХреЗ рд╕рдорд╛рди рд╣реИ рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ "рдЖрдВрддрд░рд┐рдХ" рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЬреЛ рд╕рд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рдзрд┐ рдХрд╛ "рдореВрд▓" рд╕рдВрд╕реНрдХрд░рдг рдХрднреА рднреА рдУрд╡рд░рд░рд╛рдЗрдб рди рд╣реЛ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдЙрд╕ рдПрдХ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрд╡рд░реНрдЧред

рдореБрдЭреЗ рдпрд╣ рдЪреМрдВрдХрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╕рдореБрджрд╛рдп рдХреЗ рднрд╛рд░реА рд╕рдорд░реНрдерди рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдЗрд╕реЗ рдЕрднреА рднреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ ...

рд╢рд╛рдпрдж рдПрдХ рд╕реНрдЯреЙрдк рдЧреИрдк рдЯреАрдПрд╕-рдбреЙрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рдПрдЧреА рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХ @final рдПрдиреЛрдЯреЗрд╢рди рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХреА рддрд░рд╣ред

рдЦреИрд░, рдореИрдВ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рдЬреЛрдбрд╝реВрдВ рдХрд┐ "рдлрд╛рдЗрдирд▓" рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд╕рднреА рд▓реЛрдЧреЛрдВ рдиреЗ рдХрд╣рд╛ рд╣реИ... рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╡реЛрдЯ рд╣реИред

рдорд╛рдирд╛ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдк рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде readonly рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреА рддрд░рд╣ рдорд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдордХрд╛рдЬ рдмрд╣реБрдд рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдореВрд▓ рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ final , рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ final method рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдХреНрд╕рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреИрдЯрд░реНрди рдпрд╛ рдЕрдиреНрдп рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдореЗрдВ рдмреБрд▓рд╛рдП рдЧрдП рд╡рд┐рдзрд┐ рдХреЗ рдХреНрд░рдо рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред

final рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдЧрд┐рд░реЛрд╣ - рдЪреВрдВрдХрд┐ рдпрд╣ рдЯрд┐рдХрдЯ (рдП) рдмрдВрдж рд╣реИ, рдФрд░ (рдмреА) рдореЗрдВ "рдЕрдВрддрд┐рдо рд╡рд┐рдзрд┐" рдЪрд░реНрдЪрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рднреНрд░рд╛рдордХ рд╢реАрд░реНрд╖рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдВрддрд┐рдо рддрд░реАрдХреЛрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдПрдХ рдирдпрд╛ рдЯрд┐рдХрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛрдЧрд╛ рдФрд░ рдХреБрдЫ рдкреНрд░рдЧрддрд┐ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрд░реЗ рд╣рд╛рдБ рджреЗрдЦреЗрдВ https://github.com/microsoft/TypeScript/issues/33446

@RyanCavanaugh

рдЬрдЯрд┐рд▓рддрд╛ рдмрдирд╛рдо рдореВрд▓реНрдп рдмрд╛рд░

рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ final рдмрд╛рд░реЗ рдореЗрдВ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдХреНрдпрд╛ рд╣реИ? рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдХреАрд╡рд░реНрдб рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ abstract рдЬреИрд╕реЗ рдХреАрд╡рд░реНрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИрдВ, рдФрд░ рдЙрд╕рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд░реНрдХ/рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@vinayluzrao

рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирд┐рд░реНрдорд╛рдг рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИ:

// OK
declare const SomeParent: new() => { a: string };
class A extends SomeParent { }

рдЬрд╛рд╣рд┐рд░ рд╣реИ рдПрдХ final рд╡рд░реНрдЧ new -рд╕рдХреНрд╖рдо рд╣реИ:

function make<T>(ctor: new() => T) {
  return ctor;
}
final class Done {
}
// No problem
const d = make(Done); // d: Done

рд▓реЗрдХрд┐рди рдЕрдм рдПрдХ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рд╣реИ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬреЛ new -рд╕рдХреНрд╖рдо рд╣реИ, рд▓реЗрдХрд┐рди extends рдЦрдВрдб рдореЗрдВ рд░рдЦрдирд╛ рдХрд╛рдиреВрдиреА рдирд╣реАрдВ рд╣реИред рддреЛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдХрд╛ рдПрдХ рд╕реНрддрд░ final рд╣рд░рд╛ рджреЗрддрд╛ рд╣реИ:

function subvertFinal(ctor: new() => any) {
  class Mwhahaah extends ctor {
    constructor() {
      super();
      console.log("I extended a final class! So much for 'types'!")
    }
  }
}
final class Done {
}
subvertFinal(Done);

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЛрдЧреЛрдВ рдХреЛ abstract рдФрд░ рд▓реЛрдЧ рд▓рдЧрд╛рддрд╛рд░ рддрд░реНрдХ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ abstract рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдХреБрдЫ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд░реНрдорд╛рдг рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЯрд╛рдЗрдкрдЪреЗрдХрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд╣реИ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдпрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред

рдПрдлрд╡рд╛рдИрдЖрдИ 90% рд╕рдордп рдЬрдм рд╣рдо рдЗрди рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ "рдЬрдЯрд┐рд▓рддрд╛" рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╡реИрдЪрд╛рд░рд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрддреНрдкрд╛рдж рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реА рддрд░рдл рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдирд╣реАрдВред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдирд┐рдкрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╕рд╢рд░реНрдд рдкреНрд░рдХрд╛рд░ рдФрд░ рдореИрдк рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ рдЕрд╕рд╛рдзрд╛рд░рдг рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП); рд╡реИрдЪрд╛рд░рд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдРрд╕реА рдЪреАрдЬ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЙрддреНрдкрд╛рдж рдореЗрдВ рдЕрдзрд┐рдХ рдФрд░ рд╣реЛрд╢рд┐рдпрд╛рд░ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рдлреЗрдВрдХ рдХрд░ рдирд┐рдкрдЯ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рднрд╛рд╖рд╛ рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдпрд╛ рдХрдард┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рддреЛ рдпрд╣ рднрд╛рд╖рд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ рдПрдХ рдорд╛рдирд╕рд┐рдХ рдмреЛрдЭ рд╣реЛрддрд╛ рд╣реИред

рдореБрдЭреЗ рдХреЗрд╡рд▓ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирд┐рдпрдорд┐рдд рдЖрдзрд╛рд░ рдкрд░, рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ (рдЗрд╕реЗ рдЬрд╛рдиреЗ рдмрд┐рдирд╛) рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдХреЛрдб рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИ, рдФрд░ рдЪреАрдЬреЗрдВ рдмрд╣реБрдд рдЕрдЬреАрдм рддрд░реАрдХреЗ рд╕реЗ рдЯреВрдЯ рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рд▓реЛрдЧ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреНрдпреЛрдВ, рдФрд░ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрдХреНрд╕рд░ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

@RyanCavanaugh рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рджред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рдорд╕реНрдпрд╛ new рдФрд░ extends рдмреАрдЪ рдордЬрдмреВрдд рдпреБрдЧреНрдорди рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реБрдИ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реИ , рдФрд░ рд╕реНрд╡рдпрдВ final ред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ рдпреБрдЧреНрдорди рдирд┐рд░реНрдгрдп рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЗрд╕реЗ рдкреВрд░реНрд╡рд╡рдд рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдХрдард┐рди рд╣реЛрдЧрд╛ (рдмрд┐рд▓реНрдХреБрд▓ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкреВрд░реНрд╡рд╡рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╣реА рд╕реНрдкрд░реНрд╢рд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

рдпрд╣ рдПрдХ рдРрд╕рд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдРрд╕рд╛ рд╕рд░рд▓ рдХреЛрдб рдирдореВрдирд╛ рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
final рдХреАрд╡рд░реНрдб рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░реЗрдЧрд╛:

abstract class Parent {
    public abstract method(): this;
}

class Child extends Parent {
    public method(): this {
        return new Child();
    }
}

рдЯрд╛рдЗрдк 'рдЪрд╛рдЗрд▓реНрдб' 'рдпрд╣' рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред
'рдЪрд╛рдЗрд▓реНрдб' рдЯрд╛рдЗрдк 'рдЗрд╕' рдХреА рдмрд╛рдзрд╛ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди 'рдЗрд╕' рдХреЛ 'рдЪрд╛рдЗрд▓реНрдб' рдХреЗ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЗрдВрд╕реНрдЯреЗрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди

рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рд╣рдордиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдмреИрдардХреЛрдВ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рджрд░реНрдЬрди рдмрд╛рд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ рдФрд░ рд╣рд░ рдмрд╛рд░ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред рддреЗрд░рд╣рд╡реАрдВ рдмрд╛рд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рд╣рдорд╛рд░реЗ рд╕рдордп рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИред

рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдХреЗ рдирд┐рд░реНрдгрдпреЛрдВ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрди рдирд┐рд░реНрдгрдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ-рдлрд┐рд░ рд╕реЗ-рдлрд┐рд░-рдлрд┐рд░ рд╕реЗ-рдлрд┐рд░ рд╕реЗ рддрдп рдХрд░рдиреЗ рд╡рд╛рд▓реА рдордВрдбрд▓рд┐рдпреЛрдВ рдореЗрдВ рдШреВрдордиреЗ рдореЗрдВ рдкреВрд░рд╛ рджрд┐рди рдирд╣реАрдВ рдмрд┐рддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рд▓реЛрдЧ рдЕрд╕рд╣рдордд рд╣реИрдВред рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ рд╡рд╕реНрддреБрддрдГ рдПрдХ рд╣рдЬрд╛рд░ рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдпреЛрдЧреНрдп рд╣реИрдВред

@nicky1038 рдХреА рдЯрд┐рдкреНрдкрдгреА рдЬреИрд╕реА рд░рдЪрдирд╛рддреНрдордХ рдЪрд░реНрдЪрд╛ рдХрд╛ рдпрд╣рд╛рдБ рдмрд╣реБрдд рд╕реНрд╡рд╛рдЧрдд рд╣реИ; рдореЗрд░рд╛ рдЕрдиреБрд░реЛрдз рд╣реИ рдХрд┐ рд▓реЛрдЧ рд╕рдорд╛рдЪрд╛рд░/рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдкрд┐рдВрдЧ рди рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рд▓реЙрдХ рди рдХрд░рдирд╛ рдкрдбрд╝реЗред

рдореИрдВ рдпрд╣рд╛рдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрдирд▓ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реВрдВред рдореЗрд░реЗ рдкрд╛рд╕ _init_ рдирд╛рдордХ рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рд▓рд╛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╣реИ рдХрд┐ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдЙрдк-рд╡рд░реНрдЧ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВред рдЕрдВрддрд┐рдо рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред

рдореИрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП final рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред
рдЖрдЬрдХрд▓ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдПрдХ рдорд╛рдирдХ рд╣реИред

final рдЬреЛрдбрд╝рдирд╛ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ/рдврд╛рдВрдЪреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдЬрд╣рд╛рдВ рдЖрдк рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рднреА рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдореИрдВ final рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдЧрд▓рддреА рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдЬреЗрдиреЗрд░рд┐рдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп 'myObj' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'MyClass' рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рдиреА рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ MyClass final рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд╣рд╛рдВ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реВрдВ рдХреЛрдИ рдЕрдиреНрдп рдЙрдкрдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред
100% рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬрд╛рд╡рд╛ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рд╛рдорд╛рди рд╣реИ, рд╣рдо рдХреЛрдгреАрдп рдореЗрдВ рдЖрдзрд╛рд░ рдШрдЯрдХ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХрдИ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЗрд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ ngOnChanges рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ ngOnInit рдСрдл рдПрдВрдЧреБрд▓рд░ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЛ рдЗрдиреНрд╣реЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ngOnInitReal (рдпрд╛ рдЬрд┐рд╕реЗ рд╣рдо рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред рдХрд┐рд╕рдХреЗ рд╕рд╛рдеред
рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд╣рдо рдЗрд╕реЗ рдХреЗрд╡рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдПрдХ рдШрдЯрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдЗрд╕реЗ рдирд╣реАрдВ рдкрдврд╝рддрд╛ рд╣реИ рддреЛ рдЙрд╕рдХрд╛ рдШрдЯрдХ рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЙрд╕реЗ рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЖрдзрд╛рд░ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рддреЛ рдЕрдВрддрд┐рдо рддрд░реАрдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд░реЙрдХ рдареЛрд╕ рдПрдкреАрдЖрдИ рдЕрдиреБрдмрдВрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛

class Fancy {
    readonly secureFoo = (message: string) => {
        console.log(message);
    }
}

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛

class Fancy {
    readonly secureFoo = (message: string) => {
        console.log(message);
    }
}

рдЬрдм рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рдЕрдВрддрд░ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдХреНрд╖рд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЕрдкрдиреА рдкреНрд░рддрд┐ рд╣реЛрдЧреА, рдХреЗрд╡рд▓ рдЙрд╕ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬрд┐рд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд░ рдХреЛрдИ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

fwanicka picture fwanicka  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zhuravlikjb picture zhuravlikjb  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bgrieder picture bgrieder  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

siddjain picture siddjain  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

remojansen picture remojansen  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ