Typescript: рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рдЕрдЧре░ 2014  ┬╖  224рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: microsoft/TypeScript

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

//FileA.ts
partial class ClassA
{      
    constructor(public name: string) {}
    public sayHello(): string { return "hi!"; }
}

//FileB.ts
partial class ClassA
{
   public sayBye(): string { return "by!"; }
}

рд╣реЛрдЧрд╛:

partial class ClassA
{      
    constructor(public name: string) {}
    public sayHello(): string { return "hi!"; }
    public sayBye(): string { return "by!"; }
}
Out of Scope Suggestion

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

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдкрд░ рднреА "рдЖрдВрд╢рд┐рдХ" рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рдЙрдард╛рдП рдЧрдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред

https://github.com/Microsoft/TypeScript/issues/447

@dishishkov рд╢рд╛рдпрдж рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рддрд░реАрдХреЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдВрдЧреЗ: #9

рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рди рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдХрдо рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ?

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕реЗ WinForms-рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдкрд╛рджрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП C# рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рд╡рд╛рд▓реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рдВрдкрд╛рджрд┐рдд рдлрд╝рд╛рдЗрд▓ рд╣реИ; рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ/рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВред

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

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдореНрдореЛрд╣рдХ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдЗрддрдиреА рдмрдбрд╝реА рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдЖрдХрд╛рд░ рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрд░рд╛рдо рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдкреНрд░рдореБрдЦ рдбрд┐рдЬрд╝рд╛рдЗрди рдЧрдВрдз рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП http://programmers.stackexchange.com/questions/157482 рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА)ред рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░/рддрд░реНрдХ/рджреГрд╢реНрдпрддрд╛/рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрди рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рдЖрдИрдбреАрдИ рдпрд╛ рд╕рдВрдЧрдарди рджреНрд╡рд╛рд░рд╛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рднреАрддрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

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

+1 рдХреНрд╡рд╛рдВрдЯреЗрдЯреЛрд░ред

рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдмрд┐рд▓реНрдХреБрд▓ .net рдЬреИрд╕рд╛ рд╣реА рд╣реИ; рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрд╡рд░реЛ рд╕реНрдХреАрдорд╛ рд╕реЗ) рдФрд░ рдЖрдк рдЙрддреНрдкрдиреНрди рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╣рд╛рдпрдХ рдХреЛрдб рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

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

рдореЗрд░рд╛ рдбреЗрдЯрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдлрд╝рд╛рдЗрд▓ :

class A {
  x: number;
  y: number;
  z: number;
}

class B extends A {
  value: string;
  flag1: boolean;
  flag2: boolean;
}

рдХрдХреНрд╖рд╛ рдП рдХреЗ рддрд░реАрдХреЛрдВ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓ :

class A {
  constructor(x: number, y: number, z: number) {
    this.x = x;
    this.y = y;
    this.z = z;
  }
  method1(...) { ... }
  ...
  methodN(...) { ... }
}

рдХрдХреНрд╖рд╛ рдмреА рдХреЗ рддрд░реАрдХреЛрдВ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓ :

class B extends A {
  constructor(x: number, y: number, z: number, value: string) {
    super(x, y, z);
    this.value = value;
    this.flag1 = false;
    this.flag2 = false;
  }
  method1(...) { ... }
  ...
  methodN(...) { ... }
}

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

+1 рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рдСрдЯреЛ рдЬреЗрдирд░реЗрдЯреЗрдб рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдореЗрд░реА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдореБрдЭреЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЖрдкрдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЕрдВрдЧреВрдареЗ рдХрд╛ рдирд┐рдпрдо рдЗрд╕реЗ рд╕рд░рд▓ рдмреЗрд╡рдХреВрдл (KISS) рд░рдЦрдирд╛ рд╣реИ, рдЪрд╛рд╣реЗ рдЖрдк рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдмрдбрд╝реЗ рд╡рд░реНрдЧ рдХреЛ рдЫреЛрдЯреЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИ - рдпрд╛ рддреЛ 1) рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░рдирд╛ (рдЕрдиреНрдп рд╡рд░реНрдЧ рднреА рдЗрд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдкрд╣рд┐рдпрд╛ рдХрд╛ рдкреБрди: рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЫреЛрдЯреЗ рд╡рд░реНрдЧ рднреА), рдпрд╛ 2) рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рд░/рдЗрдВрдЯрд░рдлрд╝реЗрд╕/рд╡рд┐рд░рд╛рд╕рдд/рд╡рд░реНрдЪреБрдЕрд▓ рдЗрддреНрдпрд╛рджрд┐ рдпрд╛ рдмрд╣реБрд░реВрдкрддрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

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

рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдо рд╡рд┐рдХрд╛рд╕ рд╕рдордп рд╣реЛрдиреЗ рдХреА рднреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╛рд░ ASP.NET C# рдмреНрд▓реЙрдЧ рдерд╛ рдЬреЛ рдмрд╣реБрдд рд╕реЗ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╕рдВрдШрд░реНрд╖ рдХрд░ рдЪреБрдХрд╛ рдерд╛ рдФрд░ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рд╡реЗ рдХрд╣рд╛рдБ рд╣реИрдВред рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ GOTO рд▓реЙрдЬрд┐рдХ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдЬреИрд╕рд╛ рд╣реИред рдмрд╣реБрдд рдмреБрд░рд╛!! рдореИрдВ рдмрдЧрдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреИрдЪ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛, рди рд╣реА рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдвреЗрд░ рдореЗрдВ рднреА рджрдлрди рдерд╛ (рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдирд╛рдо рдмрджрд▓рдХрд░ рд╢рдмреНрджрд╛рдВрдХрди рдХрд░реЗрдВ)ред

рдмрд╕ рдпрд╣ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рд╕реЗ 1 рдкреНрд░рддрд┐рд╢рдд рд╕реЛрдЪрд╛ рдерд╛ред

@ fletchsod-рдбреЗрд╡рд▓рдкрд░: рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рджреНрд╡рд╛рд░рд╛ рдареАрдХ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдирд╣реАрдВред рдФрд░ рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рднреА рдирд╣реАрдВред рдРрд╕реА рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд▓рдЧрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

@jfrank14 , рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ @basarat рджреНрд╡рд╛рд░рд╛

// File1.ts
class Dog { 
 ...
}

// File2.ts
extends class Dog {
  woof() { /* ... */ }
}

@NoelAbrahams , рдХреНрдпрд╛ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ 1 рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ? рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рддрдм рддрдХ рдареАрдХ рд╣реИ рдЬрдм рддрдХ рд╕рдорд╛рд╡реЗрд╢рди рдЖрджреЗрд╢ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд▓реЛрдЧ рдЯреАрдПрд╕ рдХреЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд▓рд╛ рд╕реА # рдорд╛рдирддреЗ рд╣реИрдВ ... рдореЗрд░реЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг рдХреЛрдб рдкреАрдврд╝реА рд╣реИ, рдЬреЛ рд╕реА # рдХреЗ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдкреАрдЫреЗ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░рдг рд╣реИ ... рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ... рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдореЗрдВ "// рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдирд╛ рд╣реИ

+1 - рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯреЗрдб рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ; рдХреЛрдИ рдЕрдиреНрдп рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛ рдЖрдЬ рддрдХ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реВрдВ ...

+1 - рдХреЛрдб рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдХрдХреНрд╖рд╛рдПрдВред рд╕реА #/рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛

рдЙрддреНрдкрдиреНрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╡рд┐рд▓рдп рдХреЗ рд▓рд┐рдП рднреА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!

рдЧреИрд░-рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдХреЗ рд╕рд░рд▓ рд╡рд┐рд▓рдп рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛ рд╣реЛрдЧреАред

+1

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

+1

рдЗрд╕ рд╕реАрдорд╛ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рджреМрдбрд╝реЗрдВ - рдХреГрдкрдпрд╛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЬреЛрдбрд╝реЗрдВ! :+1:

+1

+1

+1

+1

рд▓реЛрдЧ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ +1 рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЗрд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред

рдЕрдм рддрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ:

  • рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдбрд╝реА рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдлреИрд▓рд╛рддреА рд╣реИрдВред @RyanCavanaugh рдиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдореБрдЦ рдбрд┐рдЬрд╛рдЗрди рдореБрджреНрджрд╛ рдерд╛ рдЬреЛ рдЬрдЯрд┐рд▓ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рд╡рд╛рд░рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛ред
  • рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдкрд╕рдВрдж рд╣реИред
  • рдПрдХ рдЕрдиреНрдп рддрд░реНрдХ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реА # рдЙрдирдХреЗ рдкрд╛рд╕ рд╣реИред
  • рдЕрдиреНрдп рддрд░реНрдХ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИред

рджреВрд╕рд░рд╛ рдФрд░ рддреАрд╕рд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╕рдореНрдореЛрд╣рдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЪреМрдерд╛, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕реНрддрд░ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ #9 рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рдПрдХ рд╕рдорд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕ (#2249) рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ #9 рд╡рд╣реА рдХрд╛рдо рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ рдФрд░ рдФрд░ рднреА рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдЧрд╛ (рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рд▓реЗрдХрд┐рди рд╡рд░реНрдЧ рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░рдЦрдирд╛ рдЙрдЪрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рдПрдХ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди), рдФрд░ рдпрд╣ рдХрд╣рдирд╛ рдХрд┐ рджреЛрдиреЛрдВ рдлрд╛рдЗрд▓реЗрдВ рдХрдХреНрд╖рд╛ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рд╕рдорд╛рди рдорд╣рддреНрд╡ рдХреЗ рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдлрд╝рд╛рдЗрд▓ "рд╡рд┐рд╕реНрддрд╛рд░" рд╡рд░реНрдЧ рджреВрд╕рд░реЗ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд▓рдЧрднрдЧ рдЕрд╕реНрддрд┐рддреНрд╡рдЧрдд рдЕрдВрддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдореИрдВ рдмрддрд╛рдП рдЧрдП рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдЖрдВрд╢рд┐рдХ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдореЙрдбреНрдпреВрд▓ рдкрд░ рдпрд╣ IMHO рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

https://github.com/Microsoft/TypeScript/issues/447

рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдпрд╣ рдХрд┐рд╕реА OOP рдкреИрдЯрд░реНрди рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рд╣реИ рдмрд▓реНрдХрд┐ рдХреЛрдб рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

  1. рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд░реНрдЧ/рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рд╡рд┐рд╢рд╛рд▓ рдХреЛрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд░рдЦрд░рдЦрд╛рд╡ ++ рд╕реБрд╡рд┐рдзрд╛ рд╣реИред
  2. рд╕рдВрдХрд▓рди-рд╕рдордп рдкрд░ рдХрдВрдбреАрд╢рдирд▓ рд▓рд┐рдВрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░/рдмрд┐рд▓реНрдб-рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЕрд╡рд╕рд░ред рд╕рд╛рджреГрд╢реНрдп рдПрдордПрд╕рдмрд┐рд▓реНрдб, рд╕реА # рдореЗрдВ рдареЛрд╕ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛: рдбреАрдмреАрдПрдордПрд▓, рдбрд┐рдЬрд╛рдЗрдирд░ рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдзрд┐рдХ рдлреИрдВрд╕реА рд╕рд╛рдорд╛рди рдЬреИрд╕реЗ https://github.com/dotnet/corefx/pull/2045/filesред
  3. рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реБрд░рдХреНрд╖рд╛, рдЗрд╕рд▓рд┐рдП рджреЛ (рдпрд╛ рдЕрдзрд┐рдХ) рдбреЗрд╡рд▓рдкрд░ рдХреЛрдб рдЪреЗрдХ-рдЗрди рдХреЗ рджреМрд░рд╛рди рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓рддреЗ рд╣реИрдВред рд╕рдВрдШрд░реНрд╖ рдХрд╛ рд╕рдВрдХрд▓реНрдк рдЙрдбрд╝рд╛! :)
  4. рдЖрдк рдореБрдЦреНрдп рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдореЗрдВ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдХрд╕реНрдЯрдо рдЕрдзрд┐рднрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЖрдВрд╢рд┐рдХ рдмрдирд╛рддреЗ рд╣реИрдВред рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо!

рдореИрдВ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдФрд░ рдбреЗрдЯрд╛ рдкрд░рддреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдЗрди рдкрд░рддреЛрдВ рдореЗрдВ рд╕реНрдерд┐рд░ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЕрдзрд┐рдХ рдХреЛрдб рдФрд░ рдХрдо рд░рдЦрд░рдЦрд╛рд╡ рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

:+1: рд╣рд╛рдирд┐рд░рд╣рд┐рдд "рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ" рдХреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

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

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

+1

+1

рдХреЛрдб рдЬрдирд░реЗрд╢рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП +1ред

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

рдХреЛрдб рдЬрдирд░реЗрд╢рди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП +1

+1 рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА

рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░реЗрдВ?

рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдЧрдбрд╝рдмрдбрд╝ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдЙрдкрд░рд┐ рд╣реИред

рд╕реЛрдо рдХреЛ, рдЕрдЧрд╕реНрдд 10, 2015, 10:09 рдкреВрд░реНрд╡рд╛рд╣реНрди рдЧреЛрд░реНрдЧреА рдХреЛрд╕реЗрд╡ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░реЗрдВ?

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/Microsoft/TypeScript/issues/563#issuecomment -129468291
.

рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдмреЗрдХрд╛рд░ рдирд╛рдо рдпреБрдЧреНрдорди рдмрдирд╛рддрд╛ рд╣реИ

рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХрдо рднрдпрд╛рдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣:

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

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

рдЬреЗрдПрд╕ рдореЗрдВ @JoshMcCullough рд╡рд┐рд░рд╛рд╕рдд рдУрд╡рд░рд╣реЗрдб рдиреНрдпреВрдирддрдо рд╣реИ, рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдХрд┐рддрдирд╛

@ yahiko00 рд╣рдо

@hdachev

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

AFAIK рдпрд╣ ES7+ рд░рдбрд╛рд░ рдкрд░ рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛? рдпрд╣ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ...

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

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

рд╕реЛрдо, рдЕрдЧрд╕реНрдд 10, 2015 рдкреВрд░реНрд╡рд╛рд╣реНрди 11:03 рдмрдЬреЗ рдЧреЛрд░реНрдЧреА рдХреЛрд╕реЗрд╡ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

@JoshMcCullough https://github.com/JoshMcCullough рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдУрд╡рд░рд╣реЗрдб
рдЬреЗрдПрд╕ рдореЗрдВ рдиреНрдпреВрдирддрдо рд╣реИ, рдФрд░ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдХрд┐рддрдирд╛ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ:
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдк рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрдХреНрд╖рд╛ рдХреЛ 10 рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдирд╛ рдкреАрдЫрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╣рд░ рдЬрдЧрд╣ рддрд░реАрдХреЗред

@yahiko00 https://github.com/yahiko00 рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ "рдмреЗрдХрд╛рд░ рдирд╛рдо"
рдХрдкрд▓рд┐рдВрдЧ" рдХреНрдпрд╛ рд╣рдо рдпрд╣рд╛рдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рдЙрди рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
рдиреАрдЪреЗ рдирдВрдмрд░ 2 рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ (рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рд╣рд╛рд░реНрдбрдХреЛрдб)?

рдХреНрд▓рд╛рд╕ MyClass, GenerateMyClass рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ {...}

@hdachev https://github.com/hdachev

1.

рдХреБрдЫ рдУрд╡рд░рд╣реЗрдб рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдХрдо рд╣реИ
https://jsperf.com/prototype-chain-vs-direct-calls - рдХреЗрд╡рд▓ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп
рдЕрдЧрд░ рдЖрдк рдРрд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╕реАрдзреЗ рдПрдХ рджреЛ рдорд╢реАрди рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ
рдирд┐рд░реНрджреЗрд╢
2.

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

рд╡реЗ рд╡рд░реНрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ - рдЕрдиреНрдпрдерд╛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЙрдиреНрд╣реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдП, рд╣реИ рдирд╛?

AFAIK рдпрд╣ ES7+ рд░рдбрд╛рд░ рдкрд░ рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛?

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

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/Microsoft/TypeScript/issues/563#issuecomment -129483174
.

@ рдбреЗрд╡рд┐рдбрд╕рди 90 рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢реВрдиреНрдп рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ?

рдореИрдВ рд╕рд╣реА рдзрд╛рдЧреЗ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛ред https://github.com/Microsoft/TypeScript/issues/447

+1

+1

+100

+1

+1

рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП +1ред
рдореИрдВ angularjs рдФрд░ webapi рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдПрдХ рдРрд╕рд╛ рдЯреВрд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдореЗрд░реЗ рд╕реА # рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЬреЗрдПрд╕ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдмрдирд╛рддрд╛ рд╣реИред рдореИрдВ рддрдм "рдордЪрд╛рди" рдЬреЗрдПрд╕ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЗрди рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВред

рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рд▓рд┐рдП +1

рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рд▓рд┐рдП +1, рдХреЛрдгреАрдп рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреА рдмрд╣реБрдд рд╕рд╛рд░реА рдкреАрдврд╝реА рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣рдо рдмрд╣реБрдд рдХреБрдЫ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред

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

@RyanCavanaugh , рдЗрд╕реЗ "+1" рдореЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдЙрддреНрдкрд╛рджрдХ рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ?

-1 рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдорд┐рд╢реНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ: #2919

рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдФрд░ рдорд┐рд╢реНрд░рдг рджреЛрдиреЛрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ; рджреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред

+1

рдХреЛрдб рдЬреЗрдирд░реЗрдЯ рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

+1

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдЬреЛ рдЗрди рджреЛрдиреЛрдВ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

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

(2) рдХреЗ рд▓рд┐рдП, рдЖрдо рддреМрд░ рдкрд░ рдЖрдк рдЗрдВрдлрд┐рдХреНрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП :: рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

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

interface ITimes {
    times(n: number): number
}

Array implements ITimes {
    times(n: number): number {
        return this.length * n
    }
}

// The compiler should check that all methods of ITimes and IOther are implemented.
Number implements ITimes, IOther {
    times(n: number): number {
        return this * n
    }

    other(): void {}
}

// The old types should typecheck with the new interface.
const x: ITimes = true ? [] : 0
x.times(3)

// The interface list can be empty. This essentially gives you partial classes.
MyClass implements {
    anotherMethod(): void {}
}

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

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

: +1: рдореБрдЭреЗ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рднреА рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ?

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛:

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ Math рдкреИрдХреЗрдЬ рд╣реИ рдЬреЛ Set рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ Set#add , 'Set#remove'

// math.ts
export partial class Set {
  add(){}
  remove(){}
}

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ , рднрд╛рд░реА , Relational рдкреИрдХреЗрдЬ рд╣реИ рдЬреЛ Relation рдФрд░ Tuple рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣ Relational рдкреИрдХреЗрдЬ рдПрдХ Set#product рд╡рд┐рдзрд┐ рднреА рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

// relational.ts
///<reference path="./../math/tsd.d.ts"/>
partial class Set {
  product(){}
}

export class Relation(){}
export class Tuple(){}

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

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

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

// Without partials

// base

export class Base {
    static registerOperation(opName, method){
        this.prototype[opName] = method;
    }
    operation(name, ...args){
        return this[name].apply(this, args);
    }
}

// math.ts
import {Base} from './base';
class Set extends Base{
    // Define the methods here
    add(){}
    remove(){}
}

// Or here
Set.registerOperation("add", function(...){});
Set.registerOperation("remove", function(...){});

// relational.ts
import {Set} from './../math/math';

Set.registerOperation("product", function(...){});

// app.ts

import {Set} from 'math';

var set = new Set();
set.add // compiler error
set.remove // compiler error
set.product // compiler error

// have to use something like
set.operation("add", args);
// or
(<any>set).add(arg);

+1 рдореИрдВ рд╡реЗрдмрдПрдкреА рдкрд░ рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдкреНрд░реЙрдХреНрд╕реА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреА 4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдЯреЛ-рдЬреЗрдирд░реЗрд╢рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЬрдм рдСрдЯреЛ-рдЬреЗрдирд░реЗрд╢рди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреА рд╣реИрдВ!

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХреЗ рдкрд╣рд▓реБрдУрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛
+1

+1 рдХреЛрдб рдЬрдирд░реЗрд╢рди рдФрд░ "рдмрд╕ рдкрд░реНрдпрд╛рдкреНрдд рдЕрд▓рдЧрд╛рд╡" рдХреНрд▓рд╛рдЗрдВрдЯ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢реБрджреНрдз рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЬреЛ рдХрдХреНрд╖рд╛ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдл рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдПрдХ рдЕрд▓рдЧ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рд▓рд┐рдП +1 рдФрд░ рдЗрди рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рд╣реИрдВрдбрдХреЛрдб рдХрд░реЗрдВред

+1

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

рдПрдкреАрдЖрдИ рд╕реЗрд╡рд╛ рдЬреИрд╕реЗ fb (facebook) рдпрд╛ gq (google analytics) , рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд░реНрдЧ рдпрд╛ рд╡рд╕реНрддреБ рджреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

+1

рдпрд╣ рдлреАрдЪрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рднреА рдПрдХ рдмрдбрд╝рд╛ рдкреНрд▓рд╕ рд╣реЛрдЧрд╛ред

рд╣рдордиреЗ рдПрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЙрдЬрд╛рдЧрд░ рдХреА рдЧрдИ рдЪреАрдЬрд╝реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдЬреЗрдирд░реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдм рддрдХ рддреЛ рд╕рдм рдареАрдХ рдерд╛ред рд▓реЗрдХрд┐рди рдЕрдм, рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╡рд┐рд╖рдо рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде)ред рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреА рдЧрдИ рд╡рд╕реНрддреБрдПрдВ рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред

рд╡рд┐рд░рд╛рд╕рдд рдХреА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдореВрд░реНрдд рд╡рд┐рдзрд┐рдпрд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ;)

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ (рдореИрдВ рдПрдХ рд╕реА # рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ), рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди (https://github.com/Microsoft/TypeScript/issues/9) рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред

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

+1

+1 рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореЙрдбреНрдпреВрд▓ рд╡реГрджреНрдзрд┐ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдирдХрд╛рд░рддреА рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреЗрдирд░реЗрдЯ рдХреНрд▓рд╛рд╕ рд╣реИ рддреЛ рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ...

import {MyClass} from "./MyClass.generated"

MyClass.prototype.partialMethod1 = function() {
  return true;
}
MyClass.prototype.partialMethod2 = function(abc: string) {
  this.doSomething(abc);
}

declare module './MyClass.generated' {
  interface MyClass {
    partialMethod1(): boolean;
    partialMethod2(abc: string): void;
  }
}

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

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

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

+1

@ рдбреЗрд╡рд┐рдб-рдбреНрд░рд┐рд╕реНрдХреЙрд▓ рдЬреЛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рджрд┐рдЦрддрд╛ рд╣реИред (рдирд┐рдЬреА/рд╕рдВрд░рдХреНрд╖рд┐рдд рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)ред рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдПрдХрд╛рдзрд┐рдХ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдЙрди рдХреА рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рджреГрд╢реНрдпрддрд╛ рдХреНрдпрд╛ рд╣реЛрдЧреА?

++ 1 рдореЗрд░реЗ рдСрдЯреЛ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЖрдВрд╢рд┐рдХ рдХрдореА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдЪреЛрдЯ рдкрд╣реБрдВрдЪрд╛ рд░рд╣реА рд╣реИ ..

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ @ рдбреЗрд╡рд┐рдб-рдбреНрд░рд┐рд╕реНрдХреЙрд▓ рдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреА рд╣реИ - рдЖрдк рдирдП рддрд░реАрдХреЛрдВ (рдЬреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкрд░ рд░рдЦреЗ рдЬрд╛рдПрдВрдЧреЗ) рдФрд░ рдирдП _non-initialized_ рдЧреБрдг (рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдХреЛрдбрдЬрди рдирд╣реАрдВ рд╣реИ) рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЧреБрдг рдирд╣реАрдВ (рдХреНрдпреЛрдВрдХрд┐ рдЗрдирдХрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛрдбреЗрдЬрди рдкрд░ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ)ред

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

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

рдПрдлрдкреА рдкрд░ рдЖрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдХреАрдЬ рд╣реИрдВ рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ ** рдЯреА

рддреЛ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕реЗ interface A { method(): void } A.prototype.method = function() { }; рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ; рдЗрд╕реЗ рдЪреАрдиреА рдореЗрдВ рдХреЛрдбрд┐рдд рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдмрд╛рдЗрдХрд╢реЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреАрдЬ рдХреАрд╡рд░реНрдб рд╣реИ partial ред рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╢рдмреНрджрдЪрд┐рддреНрд░: C# рдореЗрдВ, partial class рдореВрд▓ рд░реВрдк рд╕реЗ extension class (рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдПрдХ рдШреЛрд╖рдгрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рднреА рдкрд░ рд░рдЦрд╛ рдерд╛), рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдЕрдВрддрд░ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдХреМрди рд╕реА рдШреЛрд╖рдгрд╛рдПрдВ рд╣реЛрдВрдЧреА extension рдФрд░ рдХреМрди рд╕реА рдШреЛрд╖рдгрд╛ рдЧреИрд░-рд╡рд┐рд╕реНрддрд╛рд░ рдШреЛрд╖рдгрд╛ рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрд╢реЛрдзрдХ partial рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ _all_ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпрд╣ _not_ рдорд╛рдорд▓рд╛ рд╣реИ; рдмрд▓реНрдХрд┐ рд╡рд┐рдкрд░реАрддред рдпрд╣рд╛рдВ, рдХреЗрд╡рд▓ рдПрдХ рд╡рд░реНрдЧ (рдЗрд╕реЗ "_primary_ рдШреЛрд╖рдгрд╛" рдХрд╣рддреЗ рд╣реИрдВ) рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░/рдЖрд░рдВрднрд┐рдХ рд╕рджрд╕реНрдп рдлрд╝реАрд▓реНрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ; рдкреНрд░рд╛рдердорд┐рдХ рдШреЛрд╖рдгрд╛ рдХреЛ рдХреЛрдИ рдирдпрд╛ рд╕рдВрд╢реЛрдзрдХ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рд╣рд░ рджреВрд╕рд░реА рдШреЛрд╖рдгрд╛ (рдЪрд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ "_extension_ рдШреЛрд╖рдгрд╛рдПрдВ" рдХрд╣рддреЗ рд╣реИрдВ) рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕, рд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рдЧреИрд░-рдЖрд░рдВрднрд┐рдХ рдлрд╝реАрд▓реНрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдкреНрд░рд╛рдердорд┐рдХ рдирд╣реАрдВ рд╣реИрдВ, рдЙрди рдкрд░ рдХреБрдЫ рд╕рдВрд╢реЛрдзрдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП _need_ рд╣реЛрдЧрд╛ред

рд╡рд░реНрддрдорд╛рди рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрдиреБрдорд╛рди рд╣реИ

class Foo {
  x = 6; // only legal to initialize here
  constructor() { } // only legal to have constructor here
  someMethod() { }
}

// vvvvvvvvv thoughts?
   extension class Foo {
     someOtherMethod() {
     }
   }

:рдЪрдордХ: :рдмрд╛рдЗрдХ: :рдШрд░::рдЪрдордХ:

рдмрд╛рдЗрдХрд╢реЗрдбрд┐рдВрдЧ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ #311 рдХреА рддрд░рд╣ рдПрдХ рднрдпрд╛рдирдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╛рдирдХреЛрдВ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдХрд╛рд░рдг рджреВрд░ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреНрдпреЛрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдЪрд┐рдд рдорд┐рд╢реНрд░рдг рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ?

рдХреАрд╡рд░реНрдб extension рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд░реЛрдз рд╣реЛрддрд╛ рд╣реИ? рдпрд╛ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдХрд╛рд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ?

@kitsonk рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐

@ рд╣рд╛рдереА-рдкреЛрдд рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рд╣реЛрдиреЗ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реЛ рд░рд╣реА рд╣реИрдВред рдХрдХреНрд╖рд╛рдПрдВ рд╣реА рдПрдХрдорд╛рддреНрд░ рдРрд╕реА рдЬрдЧрд╣ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рддрд░реАрдХреЗ рд╣рдорд╛рд░реА рдмрд╛рдзрд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╕рдордЭ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд ES7+ рдмрд╛рдЗрдВрдб рдСрдкрд░реЗрдЯрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди-рдЬреИрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рд╢реВрд╣реЙрд░реНрди рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИред

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

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

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

public partial class MyGeneratedClass
 {
     partial void Initialize();
     public constructor()
     {
          //...
         this.Initialize();
    }
 }

 public partial class MyGeneratedClass
 {
     partial void Initialize()  { //... }
 }

рддреГрддреАрдп-рдкрдХреНрд╖ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЖрдВрд╢рд┐рдХ/рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ partial/extends рдЖрдо рддреМрд░ рдкрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрдирд╛рдХрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдВрд╢рд┐рдХ рддрд░реАрдХреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд╛рдл-рд╕реБрдерд░реА рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рд╢рдХреНрддрд┐ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдо рдпрд╣рд╛рдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЬреЛ рд▓реЛрдЧ рдорд┐рдХреНрд╕рд┐рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВред

рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ (рдФрд░ рдкреНрд░рд╡рд╛рд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг) рдорд┐рд╢реНрд░рдгреЛрдВ рдХреЛ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рд░реВрдк рд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рддрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд╛рддрд╛ рд╣реИ:

function enableBeingPositioned<a>(
   // hypothetical syntax
   something: a /* <-- before type */ => a & { x: number; y: number; } /* <-- after type */
): void { 
   something.x = 0;
   something.y = 0;
}
let value = {};
value.x; // <-- should not typecheck
enableBeingPositioned(value);
value.x; // <-- should typecheck

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

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

рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рдХрд┐рд╕реА рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ (рд╕реНрд╡рд░реВрдкрдг рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦреЗрдж рд╣реИ,
рдлреЛрди рдкрд░ рдЯрд╛рдЗрдк рдХрд░рдирд╛):

рдорд╛рдИрдЯрд╛рдЗрдк рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ [] {
рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреЛрдорд╛рдИ рдЯрд╛рдЗрдк () {...}
}

рдЕрдЬреАрдм рдерд░реНрдбрдкрд╛рд░реНрдЯреАрдбреЗрдЯрд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ{
рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ() { ... }
}

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

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

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

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

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

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

@ рд╣рд╛рдереА-рдкреЛрдд, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рд╕реА # рдЖрдВрд╢рд┐рдХ рдХреА рдПрдХ рд╕рдорд╛рди рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдкрд╣рд▓реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ/рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рд╛рдж рдХреЗ рдЖрд╕рдкрд╛рд╕ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рд╕реА # рдЖрдВрд╢рд┐рдХ рд╕реЗ рдЕрдзрд┐рдХрддрдо рдкреНрд░реЗрд░рдгрд╛ рд▓реЗрддреЗ рд╣реБрдПред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ ' partial рдХреАрд╡рд░реНрдб рдХрд╛ рдкрдВрдЬреАрдХрд░рдг' рдФрд░ 'рд╕рд┐рд▓рд╛рдИ рдЖрдВрд╢рд┐рдХ' рдХреЗ рд╕рд╛рде рдЬрд╛рдПрдВ, рдФрд░ рдЗрд╕реЗ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ/рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд┐рдк рдХрд░реЗрдВ (рддрд╛рдХрд┐ рдЙрдкрднреЛрдХреНрддрд╛ рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдореЗрдВ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢реБрд░реВ рди рдХрд░реЗрдВ) рдмрд▓реНрд▓реЗ рд╕реЗ)ред рдмрд╛рдж рдореЗрдВ, рд╕рдореБрджрд╛рдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рддрдм рддрдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЙрддреНрдкрд╛рдж-рддреИрдпрд╛рд░ рдФрд░ RTM'd рди рд╣реЛ рдЬрд╛рдПред рдпрджрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреЗрдЪреАрджрд╛ рдЧрдардЬреЛрдбрд╝ рдФрд░ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрднрд╡рдд: рдЗрд╕рд╕реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдФрд░ рджреЗрд░реА рд╣реЛрдЧреАред

+1 - рдЙрддреНрдкрдиреНрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред

рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП +1

рдореИрдВрдиреЗ рдкреЙрд▓реАрдлрд┐рд▓ рдмрдирд╛рдпрд╛ рдФрд░ рдЕрдкрдиреА рдмрдбрд╝реА рдХрдХреНрд╖рд╛ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ред

рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред

export class C {
  constructor() {
  }
}
export interface C {
  m(): void;
}

рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред

export default class extends C {
  m(): void {
  }
}

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд░реНрдЬ рдХрд░реЗрдВред

import {C} from './core';
import m from './member/m';

compose(C, m);
export {C}
import {assign} from './assign';
import {concat} from './concat';

export function compose<T extends new (...args: any[]) => any>(target: T, ...sources: T[]): T {
  return concat([target], sources)
    .reduce((b, d) => {
      void assign(b.prototype, d.prototype);
      for (const p in d) if (d.hasOwnProperty(p)) b[p] = d[p];
      return b;
    });
}

https://github.com/falsandtru/spica/commit/a6ff30da5319db5f25f703a29da48fc0f7dbe2fe

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

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

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

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреНрдп рдЙрдкрд╛рдп рд╣реИрдВ?

рдореИрдВ рдЗрд╕реЗ TS рдореЗрдВ рднреА рдЬреЛрдбрд╝рдХрд░ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛

рдХреЛрдб рдЬрдирд░реЗрд╢рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП +1 (рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рд╕реЗрд╡рд╛ рд╕рдВрджрд░реНрдн рд╕реЗ рдбреАрдЯреАрдУ)

рдХреЛрдб рдЬрдирд░реЗрд╢рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП +1ред рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ: рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рд╣реИрдВ рдЬрд┐рдирдХреЗ render() рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред

partial рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдореИрдВ рдореБрдЦреНрдп рд╡рд░реНрдЧ ( Component ) рдмрдирд╛рдо рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЯрд╛рдЗрдк-рдЪреЗрдХ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдореБрдЦреНрдп рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдирд╛ рдФрд░ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХреЗ рд▓рд┐рдП рдЖрд╢рд╛ рдХрд░рдирд╛ред

рдЕрдЧрд▓реЗ TS 2.0 рдХреЗ рд╕рд╛рде, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреБрдЫ рдХреЛрдб-рдЬрдирд░реЗрд╢рди рдорд╛рдорд▓реЛрдВ рдХреЛ this рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдерд╛, рдХреЗ рдмрдЬрд╛рдп

partial class MyComponent extends React.Component<any,any> {
    render() {
        ...
    }
}

рдореИрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдБ

function render<this extends MyComponent>()
        ...
}
MyComponent.prototype.render = render;

+1 рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЭреЗ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдПрдХрд╛рдзрд┐рдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдПрдХрд╛рдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдлреИрд▓реЗ рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХреЛ рдЙрддреНрдкрдиреНрди/рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХреЗрдВред

рдореЗрд░реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдереАрдВ, рдорд┐рд╢реНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рджреЛрдиреЛрдВ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реИрдВред рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рднреМрддрд┐рдХ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ, рдорд┐рд╢реНрд░рдг рддрд╛рд░реНрдХрд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд▓рдХреНрд╖рдгреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рдХрд╛рд░ рдФрд░ рдореВрд▓реНрдп рд╕реНрддрд░ рджреЛрдиреЛрдВ рдкрд░ рд╕рдореГрджреНрдз рдХрд░рддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, рдорд┐рдХреНрд╕рд┐рдВрд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдЬреЛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореБрд╣рд╛рд╡рд░реЛрдВ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдмрдврд╝реА рд╣реБрдИ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдФрд░ рдореЗрд╢рд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ @aleksey-bykov рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ

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

+1 рдореБрдЭреЗ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдЪрд╛рд╣рд┐рдП!

рдХреНрдпрд╛ рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд╛рд░реНрдп рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд╕реНрд╡рд┐рдлреНрдЯ:

interface Rect {
    x: number
    y: number
}

extension Rect {
    area() => this.x * this.y
}

рд╕реНрд╡рд┐рдлреНрдЯ рд╕рдВрд╕реНрдХрд░рдг:

protocol Rect {
    var x: Float {get}
    var y: Float {get}
}
extension Rect {
    func area() -> Float {
        return self.x * self.y
    }
}

+1

рдХреЛрдб рдЬрдирд░реЗрд╢рди рдФрд░ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рд╕рд╛рде-рд╕рд╛рде рдЪрд▓рддреА рд╣реИрдВред

рд╡рд┐рд░рд╛рд╕рдд рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдЧреМрд░рд╡рд╢рд╛рд▓реА #include рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдПрдХ рдЦрд░рд╛рдм рд╕рдорд╛рдзрд╛рди рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп 2 рд▓реЗрдВред рдпрд╣ рдореВрд▓ рд╡рд░реНрдЧ рд╕реЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдирд╣реАрдВ рдкрдврд╝реЗрдЧрд╛ , рдЬрд┐рд╕рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░-рджрд░-рд╡рд┐рд░рд╛рд╕рдд рдЕрд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

@tsvetomir рдпрд╣ рдПрдХ рдХреЛрдгреАрдп рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдорд╣рд┐рдорд╛рдордВрдбрд┐рдд #рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЦрд░рд╛рдм рд╕рдорд╛рдзрд╛рди рд╣реИ

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ "рдХреЛрдгреАрдп" рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ... рдХрднреА рдирд╣реАрдВ рдереА

рдЬреБрд▓рд╛ 23, 2016 рдореЗрдВ 9:46 рдмрдЬреЗ рдкрд░, Aluan рд╣рджреНрджрд╛рдж < [email protected] [email protected] > рдиреЗ рд▓рд┐рдЦрд╛:

@tsvet omirhttps://github.com/tsvetomir рдпрд╣ рдПрдХ рдХреЛрдгреАрдп рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдорд╣рд┐рдорд╛рдордВрдбрд┐рдд #рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЦрд░рд╛рдм рд╕рдорд╛рдзрд╛рди рд╣реИ

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

рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ Gi tHubhttps://github.com/Microsoft/TypeScript/issues/563#issuecomment -234753589 рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореНрдпреВрдЯ рдХрд░реЗрдВ https://github.com/notifications/unsubscribe-auth/AJPCIh7n2_0dt00kw- XJv7tc9LB0tPsIks5qYtH4gaJpZM4CcixKред

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

рдЕрдиреБрд░реЛрдз рд╕реА # рдХреЗ рд╕рд╛рде рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╡ рдФрд░ рдкрд░рд┐рдЪрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдХрдореА рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рддреБрд▓рдирд╛ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдпрдВ рдХреЛ .NET рд╕реЗ рджреВрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ред рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╕рдорддрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИред

рдЕрдиреБрд░реЛрдз рд╕реА # рдХреЗ рд╕рд╛рде рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╡ рдФрд░ рдкрд░рд┐рдЪрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдХрдореА рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рддреБрд▓рдирд╛ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдпрдВ рдХреЛ .NET рд╕реЗ рджреВрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╕рдорддрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рд╣реИред

@tsvetomir рд▓рдВрдмреЗ рд╕рдордп рддрдХ .NET рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдФрд░ рдПрдХ рднрд╛рд╡реБрдХ рд╕реА # рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрджреНрдзреГрдд рд▓реЗрдЦ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдХреА рдХрд┐рд╕реА рднреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд╣реАрдВ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХрдИ рд╡рд╛рд░реНрддрд╛рдУрдВ, рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░реЛрдВ рдФрд░ рдкреЛрд╕реНрдЯреЛрдВ рдореЗрдВ @ahejlsberg рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП

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

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

@yahiko00
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рднреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред
рдпрд╣ рдПрдХ рд╕реБрдкрд░рд╕реЗрдЯ рд╣реИред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

  1. рд╕реА # рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реИрдВред рд╡реЗ рдШреЛрд╖рдгрд╛рддреНрдордХ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реЗ рдирд┐рдпрддрд╛рддреНрдордХ рдирд┐рд╖реНрдкрд╛рджрди рдЖрджреЗрд╢ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред
  2. рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рднреМрддрд┐рдХ рдирд╣реАрдВ рддрд╛рд░реНрдХрд┐рдХ рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдЖрдпрд╛рдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
    рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ

_app/my-class-part-1.ts_

TypeScript export partial class MyClass { firstName = "John"; lastName = "Smith"; }

рддрдерд╛
_app/my-class-part-2.ts_

TypeScript export partial class MyClass { fullName = this.firstName + ' ' + this.lastName; }

рдореИрдВ рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдХреИрд╕реЗ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдЪреВрдВрдХрд┐ рдореИрдВ рдХрд┐рд╕реА рднреА рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдЖрдЗрдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдЕрдореВрд░реНрддрддрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬреЛ рдореБрдЭреЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
_app/main.ts_

TypeScript import { MyClass } from './my-class';

рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛? рднрд▓реЗ рд╣реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХреЗ рдХрд┐ _app/my-class-part-1.ts_ рдХреЛ _app/my-class-part-2.ts_ рд╕реЗ рдкрд╣рд▓реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдпрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рдЖрдпрд╛рдд рдХреЛ рдЕрдорд╛рдиреНрдп рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рди рд╣реА рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд╡реЗ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ RequJS рдпрд╛ рдЕрдВрддрддрдГ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреНрдпрд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдкреВрд░реА рдзрд╛рд░рдгрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╣реИред

рдЕрджреНрдпрддрди: рдЗрд╕реЗ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЬрдЯрд┐рд▓ рдирд┐рд░реНрднрд░рддрд╛ рдЕрдиреБрдорд╛рди рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рднреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред
рдпрд╣ рдПрдХ рд╕реБрдкрд░рд╕реЗрдЯ рд╣реИред

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

рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рд╣рдордд рд╡рд░реНрддрдорд╛рди ES6 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрдЧрд╛ред рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

import { MyClass } from ['app/my-class-part-1', 'app/my-class-part-2'];

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

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

@aluanhaddad рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдХреЛ export partial class рдЬрдмрдХрд┐ рд╢реЗрд╖ рдореЗрдВ рдХреЗрд╡рд▓ partial class рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рд╣реЛрдВрдЧреАред рдЖрдк рдЗрд╕реЗ рдЙрд╕ рдЬрдЧрд╣ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕реЗ рдЗрд╕рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рд╣реЛрддрд╛ рд╣реИред рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ:

_app/my-class.ts_

export partial class MyClass {
    firstName = "John";
    lastName = "Smith";
}

_app/my-class.part.ts_

partial class MyClass {
    get fullName(): string {
        return this.firstName + ' ' + this.lastName;
    }
}

_app/main.ts_

import { MyClass } from './my-class';

рдХреНрдпрд╛ рдЧреБрдо рд╣реИ рд╕рдВрдХрд▓рдХ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ рдХрд┐ рднрд╛рдЧреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдВ рд╣реИред рдпрд╣ рд╕реА # рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдШреЛрд╖рдгрд╛ рд╡рд┐рд▓рдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

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

рдЖрдк рдмрд╕ рдЕрдкрдирд╛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЕрдкрдиреА рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд╕рд╛рде, рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЙрддреНрдкрдиреНрди рдХреЛрдб рд╕реБрдВрджрд░ рд╣реИ, рдХреЛрдИ рднреА рдордиреБрд╖реНрдп рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИред

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

@ рдбреЗрд╡рд┐рдб-рдбреНрд░рд┐рд╕реНрдХреЙрд▓ рдЗрд╕реЗ рдФрд░ рднреА рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдордЬрдмреВрдд рдЯрд╛рдЗрдк-рдЪреЗрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЛрдВ рдореЗрдВ this: рддрд░реНрдХ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореЙрдбреНрдпреВрд▓ рдСрдЧреНрдореЗрдВрдЯреЗрд╢рди рдХреЗ рдЙрджреНрдзреГрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ:

// observable.ts stays the same
// map.ts
import { Observable } from "./observable";
declare module "./observable" {
    interface Observable<T> {
        map<U>(f: (x: T) => U): Observable<U>;
    }
}
Observable.prototype.map = function (this: Observable, f) {
    // here "this" has the shape of the "Observable" class
}

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

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

_app/my-class.ts_

export partial class MyClass {
    firstName = "John";
    lastName = "Smith";
}

рдРрдк/my-class.part.ts

partial class MyClass {
    get fullName(): string {
        return this.firstName + ' ' + this.lastName;
    }
}

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

рдХреНрдпрд╛ рдЧреБрдо рд╣реИ рд╕рдВрдХрд▓рдХ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ рдХрд┐ рднрд╛рдЧреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдВ рд╣реИред рдпрд╣ рд╕реА # рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдШреЛрд╖рдгрд╛ рд╡рд┐рд▓рдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдШреЛрд╖рдгрд╛ рд╡рд┐рд▓рдп _declarations_ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

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

рдпреЗ рд╕рднреА _are_ рдЖрдорддреМрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╡рд░реНрдЧ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

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

рдмреАрдЯреАрдбрдмреНрд▓реВ: рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╕реА # рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдЯреАрдПрд╕ рдкреНрд░рдХрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рддреЛ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯрдмрд┐рд▓реНрдбрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдЖрдкрдХреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯрдмрд┐рд▓реНрдбрд░ рдХреЛ рдЖрдЬрдорд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ;)

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡...

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╕рдВрдХрд▓рдХ рдиреЗ рд╕рднреА рднрд╛рдЧреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА? рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореБрдЭреЗ рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рдХрд╛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдкрдбрд╝реЗ рдФрд░ рд╕рдм рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдкрдбрд╝реЗ?

/MyClass.partial.ts

export partial class MyClass {
    firstName = "John";
    lastName = "Smith";
}

MyClass.ts

// v- this would NOT throw an error because the definition is marked as partial
import { MyClass } from "./MyClass.partial";

export class MyClass {
    get fullName(): string {
        return this.firstName + ' ' + this.lastName;
    }
}

рдлрд┐рд░...

  1. рдЕрдЧрд░ рдореИрдВ MyClass рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ MyClass.ts рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛
  2. рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдиреЗ рдкрд░, MyClass.partial.ts рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдЬреЛ MyClass.prototype рдмрдврд╝рд╛рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
  3. MyClass.partial.ts рдХреЛ MyClass рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм MyClass рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

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

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

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

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

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

рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХрд┐рдпрд╛ рд╣реИ:

рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХрд┐рдпрд╛ рд╣реИ :
 рдлрд╝рд╛рдЗрд▓1 . рдЯреА
 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрдлреВ {
 рдП ( ) : рд╢реВрдиреНрдп ;
 }
 рдХреНрд▓рд╛рд╕ рдлреВ рдЗрдлреВ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ {
 рдП ( ) { /*рдХреБрдЫ рдХрд░реЛ*/ }
 }
 рдлрд╝рд╛рдЗрд▓ 2 ред рдЯреА
 /// <рд╕рдВрджрд░реНрдн рдкрде = "file1.ts" /> // рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ
 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрдлреВ {
 рдмреА ( ) : рд╢реВрдиреНрдп ;
 }
 рдлреВ . рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк ред рдмреА = ( ) = > { /*рдХреБрдЫ рдХрд░реЛ*/ }
 рдлрд╝рд╛рдЗрд▓3 . рдЯреА
 /// <рд╕рдВрджрд░реНрдн рдкрде = "file1.ts" /> // рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ
 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрдлреВ {
 рдЧ ( ) : рд╢реВрдиреНрдп ;
 }
 ( < ifoo > foo ред рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк ) ред рд╕реА = ( ) = > { /*рдХреБрдЫ рдХрд░реЛ*/ }
 рдЙрдкрднреЛрдХреНрддрд╛ ред рдЯреА
 /// <рд╕рдВрджрд░реНрдн рдкрде = "file1.ts" />
 /// <рд╕рдВрджрд░реНрдн рдкрде = "file2.ts" />
 /// <рд╕рдВрджрд░реНрдн рдкрде = "file3.ts" />
 рдЪрд▓реЛ f = рдирдпрд╛ рдлреВ ( ) ;
 рдЪ ред рдП ( ) ;
 рдЪ ред рдмреА ( ) ;
 рдЪ ред рдЧ ( ) ;

рдореЙрдбреНрдпреВрд▓ рдСрдЧреНрдореЗрдВрдЯреЗрд╢рди рдЕрднреА рднреА рдпрд╣рд╛рдВ 90% рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИред @svallory рдХреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВред

/MyClass.partial.ts

export partial class MyClass {
    firstName = "John";
    lastName = "Smith";
}

MyClass.ts

// v- this would NOT throw an error because the definition is marked as partial
import { MyClass } from "./MyClass.partial";

export class MyClass {
    get fullName(): string {
        return this.firstName + ' ' + this.lastName;
    }
}

рдореЙрдбреНрдпреВрд▓ рд╡реГрджреНрдзрд┐ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА ...

MyClass.ts

export class MyClass {
    firstName = 'John';
    lastName = 'Smith';
}

MyClass.generated.ts

import { MyClass } from './test';

Object.defineProperty(MyClass.prototype, "fullName", {
    get(this:MyClass) {
        return this.firstName + ' ' + this.lastName;
    }
});

declare module './test' {
    interface MyClass {
        readonly fullName: string;
    }
}

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

рдЖрдЬ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХрдорд╛рддреНрд░ рдЧреЛрдЪрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛:

  • рдЖрдк this: MyClass рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдЬреА рдпрд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдлрд╝реАрд▓реНрдб рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗред

    • рдЗрд╕реЗ any рдХрд╛рд╕реНрдЯ рдХрд░рдХреЗ рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    • рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЖрдк this рд╕рдВрд░рдХреНрд╖рд┐рдд рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдФрд░ рднреА рдирд┐рдпрдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

  • рдЙрддреНрдкрдиреНрди рдХреЛрдб рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдбрд░рд╛рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд╛рд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдВрд╡рд░реНрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡реЗ рдХрднреА рднреА рдЕрдВрддрд░ рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдзреНрдпрд╛рди рд░рдЦреЗрдВ, рдпрд╣ TS 2.0+ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИред

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

@wongchichong рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдФрд░ /// <reference path="..."/> ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдврд╝реЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдХреЛрдб (рдЬреЛ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рд╣реИ) рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрд▓рдЧ рдЬрд╛рдирд╡рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рд▓реЛрдбрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдСрд░реНрдбрд░ рдирд┐рд░реНрднрд░ рдФрд░ рдирд┐рд╣рд┐рдд рд╣реИрдВред рдЗрд╕реАрд▓рд┐рдП @svallory рдХрд╛ рд╕реБрдЭрд╛рд╡ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореИрдиреБрдЕрд▓ рд╡рд╛рдпрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддреА рд╣реИред

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

@pankleks рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рдЕрднреА рднреА рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред

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

рд╕реА # рдЬреИрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ, рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВред

рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рднреА рдлрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдХреЗрд▓реЗ рдШреЛрд╖рдгрд╛рддреНрдордХред

ES6 рдХреЛ рдЫреЛрдбрд╝рдХрд░, "рд╡рд░реНрдЧ" рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ TS рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред JS рдХреЗ рдкрд╛рд╕ _at all_ рд╡рд░реНрдЧ рдХреА рдХреЛрдИ рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИред
рддреЛ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдХрд┐ рдПрдХ рд╡рд░реНрдЧ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдирд╣реАрдВ?

ES6 рдХреЛ рдЫреЛрдбрд╝рдХрд░,

TS рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╕рдордп рд╣рдо ES6 рдкрд░ рд░реЛрдХ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ TS рд▓рдХреНрд╖реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд░реНрддрдорд╛рди/рднрд╡рд┐рд╖реНрдп рдХреЗ ES рдпреБрдХреНрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реИ ред

рд╕рдЪ рд╣реИ :/

рдХреЛрдб рдЬрдирд░реЗрдЯреЗрдб рдХреНрд▓рд╛рд╕, рдпрд╛рдиреА рдПрдВрдЯрд┐рдЯреАрдЬ, рд╕рд░реНрд╡рд┐рд╕ рд▓реЗрдпрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдмрдбрд╝реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП, C# рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ, рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВ, рдЬрдм рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд┐рддрд┐ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░, рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ ~500 рдХреЛрдб рдЬреЗрди рдХреНрд▓рд╛рд╕реЗрд╕ рд╣реИрдВ, рдореБрдЭреЗ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдмрд╣реБрдд рдпрд╛рдж рдЖрддреА рд╣реИред

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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрд╕реНрдбрд┐рд╕реНрдХрд╕ рдкрд░ рдЗрд╕ рдкрд░ рдЬреНрдпрд╛рджрд╛ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рдореБрдЭреЗ рдЬреЛ рдПрдХрдорд╛рддреНрд░ рдзрд╛рдЧрд╛ рдорд┐рд▓рд╛ рд╣реИ рдЙрд╕рдореЗрдВ 9 рдкреЛрд╕реНрдЯ рд╣реИрдВред

@ yahiko00 рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╡рд┐рд░реЛрдзреА рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕реА # рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред

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

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

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

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

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдЬреИрд╕рд╛ рдХрд┐ @SaschaNaz рдмрддрд╛рддреЗ рд╣реИрдВ, рдЗрд╕ _does_ рдХреЛ ECMAScript рдореЗрдВ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ http://esdiscuss.org рдкрд░ рдПрдХ рдирдпрд╛ рд╕реВрддреНрд░ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдпреВрдЖрд░рдПрд▓ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рд╡рд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХреЗрдВ

рдкреБрдирд╢реНрдЪ: рдпрд╛ рдЕрдзрд┐рдХ-GitHub- рдЬреИрд╕реЗ ES рдкреНрд░рд╡рдЪрди рдкрд░ ред
PS2: рдпрд╛ рднреА- GitHub-like-and-more-active

рдореБрдЭреЗ рднреА рдХреБрдЫ рдирд┐рд░реНрдорд╛рдг рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдЬреЛ рдЯреАрдПрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реА # рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

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

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

рдПрдХ рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрдЪреНрдЫрд╛ рдбрд┐рд╕реБрдЧрд░рд┐рдВрдЧ рдвреВрдВрдврд╛ рдЬрд╛рдП :

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

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

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣:

class A {
  foo() { return "foo" }
}
class B extends A {
}

partial(B, class {
  get foo() {
    return super.foo(); // should work
  }
});

( рдПрд╕реНрдХрд┐рд╕рд╕ рдкрд░ рдХреНрд░реЙрд╕ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛)

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢реБрджреНрдз рдЬреЗрдПрд╕ ( ES2017 getOwnPropertyDescriptors рдХреЗ рд╕рд╛рде) рдореЗрдВ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред ES рд▓реЛрдЧ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЗрд╡рд▓ рдЗрд╕ рдЫреЛрдЯреЗ рд╕реЗ рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЪреАрдиреА рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

function partial(base, extension) {
┬а extension.prototype.__proto__ = base.prototype.__proto__; // to enable 'super' reference
┬а const descriptors = Object.getOwnPropertyDescriptors(extension.prototype);
┬а delete descriptors.constructor; // must not override constructor
┬а Object.defineProperties(base.prototype, descriptors);
┬а 
┬а┬аreturn base;
}

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

@SaschaNaz рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ getOwnPropertyDescriptors рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдЧреБрдг IDE "рдСрдЯреЛрд╕реБрдЧреЗрд╢рди" рдХреЗ рд▓рд┐рдП рдЫрд┐рдкрд╛рдП рдЬрд╛рдПрдВрдЧреЗ (рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ)ред рдпрд╛рдж рд░рдЦреЗрдВ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ "рд╕реНрд╡рдд: рд╕реБрдЭрд╛рд╡" рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреИрджрд╛ рд╣реБрдЖ рд╣реИ (рдХрднреА-рдХрднреА рд▓реЛрдЧ рдЗрд╕реЗ "рд╕реНрдЯреНрд░реЛрд▓рдЬреА рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реБрдЖ" рдХрд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЬреЛ рдкрд╕рдВрдж рд╣реИ рд╡рд╣ "рдСрдЯреЛрд╕реБрдЬреЗрд╢рди" рд╣реИ)ред

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

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

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдореБрджрд╛рдп рдХреЛ рдПрдХ рдЙрдкрдХрд░рдг рджреЗрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдФрд░ рдореБрдЭреЗ 100% рдпрдХреАрди рд╣реИ рдХрд┐ рдРрд╕реЗ рджреЗрд╡ рд╣реЛрдВрдЧреЗ рдЬреЛ рдЗрд╕рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдРрд╕реЗ рджреЗрд╡рддрд╛ рднреА рд╣реИрдВ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рдирддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрд┐рд╕реА рднрд╛рд╖рд╛ рдХреА рдХрд┐рд╕реА рд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рдпрд╣реА рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реИ?

рдХреЛрдб рдЬрдирд░реЗрд╢рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП +1ред рдФрд░ рдореИрдВ @rpokrovskij рд╕реЗ рд╕рд╣рдордд рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрдпреЛрдВ рдЪреБрдирддреЗ рд╣реИрдВ, рдореИрдВ рд╕реАрдзреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╕реА # рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред

@greendimka рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ ES рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@ xiexin36 рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕реА # рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реА# рдХреЗ рдмреАрдЪ рд╕рдорд╛рдирддрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди class рдХреА рдЙрдирдХреА рдзрд╛рд░рдгрд╛рдПрдВ рдЕрд▓рдЧ рд╣реИрдВред

@ xiexin36 рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдЖрдк рдЕрднреА рднреА рдореЙрдбреНрдпреВрд▓ рд╡реГрджреНрдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдиреЛрдЯ рдХрд┐рдпрд╛

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

@aluanhaddad рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдХреЛрдИ рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИ (рдИрдПрд╕ 6 рдХрдХреНрд╖рд╛рдПрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдиреА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВ)ред рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдордЬреЛрд░ рд╣реЛрдиреЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ - рддреЛ рдХреНрдпрд╛ рд╣рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рджреВрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

@greendimka ES6 рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдХреНрд╖рд╛рдПрдВ рдПрдХ рд╣реА рд╣реИрдВред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрдорд╛рдг рдЬреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рд╣реИред

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

ES6 рдХрдХреНрд╖рд╛рдПрдВ _very_ рдХрдордЬреЛрд░ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЕрдкрдиреА рдзрд╛рд░рдгрд╛ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рдЗрд╕рдХреЗ рдбрд┐рдЬрд╛рдЗрди рд▓рдХреНрд╖реНрдпреЛрдВ рдХрд╛ рд╕реАрдзрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реЛрдЧрд╛ред

рдмрд╕ рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдмрдЪреЗрдВ рдФрд░ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧреАред

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

рдФрд░ рдордиреБрд╖реНрдп рдХреЛ рдЬреНрдЮрд╛рдд рд▓рдЧрднрдЧ рд╣рд░ рдЙрдкрдХрд░рдг рдХреЛ рддреЛрдбрд╝ рджреЛ? рдирд╣реАрдВ рдзрдиреНрдпрд╡рд╛рджред

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

@aluanhaddad рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рджрд░реНрдж рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ "рдХрдХреНрд╖рд╛рдПрдВ" рджреЛрд╣рд░рд╛рдиреЗ рдкрд░ рдХреИрд╕реЗ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛? рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрдИ рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИред рдЕрдкрдиреЗ рд╕рд┐рд░ рд╕реЗ рдХрдХреНрд╖рд╛рдПрдВ рд╣рдЯрд╛ рджреЗрдВ, рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЫреЛрдбрд╝ рджреЗрдВ, рдФрд░ рдЕрдм рд╕реБрдиреЗрдВ: рдХреЛрдб рдкреАрдврд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдХ рд╕рдВрдХрд▓рди рдЗрдХрд╛рдИ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдИ рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИрдВ, рдХреЗрд╡рд▓ рдХрд╛рд░реНрдп рд╣реИрдВ? рдареАрдХ рд╣реИ, рд╣рдо рдЖрдВрд╢рд┐рдХ рдХрд╛рд░реНрдп рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рдЧрднрдЧ рддреИрдпрд╛рд░ рд╣реИ: рдШреЛрд╖рдгрд╛ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд╣рд╛рдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рднреА рднрд╛рдЧреЛрдВ/рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рд╡реЗ рд╣рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рд╕рдВрдХрд▓рди рдЗрдХрд╛рдЗрдпрд╛рдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд╣реАрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 100% рддреИрдпрд╛рд░ рд╣реИред

рдФрд░ рд╡реИрд╕реЗ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо, рд╣рдореЗрдВ рдЖрдВрд╢рд┐рдХ рдХрд╛рд░реНрдп рднреА рджреЗрддреА рд╣реИ! рдФрд░ рдХреГрдкрдпрд╛ рдЗрд╕реЗ C# рдЯреАрдо рдХреЛ рднреА рдмрддрд╛рдПрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрднреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди" рд╣реИрдВред :)

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

@aluanhaddad ред рдХреНрдпрд╛ рдЖрдк "рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдХ рд╕рдВрдХрд▓рди рдЗрдХрд╛рдИ" рд╢рдмреНрдж рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ? рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рди рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдП) рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╣рдо рдЗрд╕реЗ "рд╕рдВрдХрд▓рди" рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдмреА) рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХрд▓рди рднрд╛рд╖рд╛ рд╣реИред

рдЕрдкрдиреА рдХрд▓реНрдкрдирд╛ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

function partial func(arguments) {
  return function() {
    return codegenerated(arguments);
  };
}

function partial func(arguments) {
   function codegenerated(arguments){
      // ...
   }
}

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

@rpokrovskij
рдЕрдЧрд░ рдореИрдВ рд╡рд┐рд░реЛрдзреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдордиреЗ рдЖрдпрд╛ рддреЛ рдореИрдВ рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореЗрд░рд╛ рдорддрд▓рдм рдХреЛрдИ рдЕрдкрд░рд╛рдз рдпрд╛ рдЕрдирд╛рджрд░ рдирд╣реАрдВ рдерд╛ред

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

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

"рдордиреБрд╖реНрдп рдХреЛ рдЬреНрдЮрд╛рдд рд▓рдЧрднрдЧ рд╣рд░ рдЙрдкрдХрд░рдг рдХреЛ рддреЛрдбрд╝ рджреЛ" - рдпрд╣ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ ??? рдХреИрд╕реЗ?!?! рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рддреЛрдбрд╝рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореИрдВ рдмрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдХреГрдкрдпрд╛, рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рдореЗрд░реА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдВред

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

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

ES2015 рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдИ рдЪреАрдЬреЗрдВ рдЧрд▓рдд рд╣реИрдВред ES5.1 рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдИ рдЪреАрдЬреЗрдВ рдЧрд▓рдд рдереАрдВред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдХрдореА рдЙрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдирд╣реАрдВ рдереАред рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд░рд┐рд╡реАрд▓рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдкреИрдЯрд░реНрди рдЬреИрд╕реА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рд┐рд╡реАрд▓рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдкреИрдЯрд░реНрди, рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рд▓рд┐рдП рдЪреАрдиреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

"рдордиреБрд╖реНрдп рдХреЛ рдЬреНрдЮрд╛рдд рд▓рдЧрднрдЧ рд╣рд░ рдЙрдкрдХрд░рдг рдХреЛ рддреЛрдбрд╝ рджреЛ" - рдпрд╣ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ ??? рдХреИрд╕реЗ?!?! рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рддреЛрдбрд╝рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореИрдВ рдмрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдХреГрдкрдпрд╛, рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рдореЗрд░реА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдВред

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

рдЗрд╕рд▓рд┐рдП, рдореВрд▓ рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рднрд╛рд╖рд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд░реЛрдХрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рднрд╛рд╖рд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд┐рдирд╛ рдХрднреА рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣рд╛рдВ рдХреЗрд╡рд▓ рд╡рд┐рдХрд╕рд┐рдд рди рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдХреА рдЦреЛрдЬ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред

рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рдХреНрдпрд╛ рд▓рд╛рдн рджреЗрддреА рд╣реИрдВ, рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рдЕрдЪреНрдЫреА рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдиреА рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рдЕрд╕рд▓реА рд▓рд╛рдн рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЗрд╕реЗ рд╕реА # рдХреА рддрд░рд╣ рдмрдирд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рд╣реИ?


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

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


рдЕрдм рддрдХ рдореИрдВрдиреЗ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдФрд░ рдХреЛрдб рдСрд░реНрдЧрдирд╛рдЗрдЬреЗрд╢рди рдкрдврд╝рд╛ рд╣реИред

рдХреЛрдб рдЬрдирд░реЗрд╢рди, рдореЙрдбреНрдпреВрд▓ рдСрдЧреНрдореЗрдВрдЯреЗрд╢рди рдХреЛ рджреЗрдЦреЗрдВ, рдХреБрдЫ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдореИрдВ рдЖрдЬ рддрдХ рд╕рд╛рдордирд╛ рдХрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред

Omnisharp-Client рдХреЗ рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди OmniSharp.Api.V2 рд╕реА # рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдЙрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред

RxJS рдХреЗ рд▓рд┐рдП рд╣рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирдХреНрд╢реЗ рдкрд░ рд╣реИрдВ рдирдореВрджрд╛рд░ ред

рдореИрдВ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рд╣рдореЗрдВ 3 рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рджрд┐рдП рдЧрдП рд╣реИрдВред

  • MyAwesomeClass1.ts
  • MyAwesomeClass2.ts
  • MyAwesomeClass3.ts

рджрд╛рдпрд░рд╛: рд╡реИрд╢реНрд╡рд┐рдХ рдореЙрдбреНрдпреВрд▓ ( namespace / module )

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

рдпрджрд┐ рдореЗрд░реЗ tsconfig.json рдХреЗрд╡рд▓ Class1 рдФрд░ Class2 рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдкрде рд╣реИрдВ, рддреЛ Class3 рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рд╡рд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд▓рдп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

  • рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреНрд░реБрдЯрд┐ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдХрдХреНрд╖рд╛ 3 рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рднреНрд░рдо рдХреА рд╕реНрдерд┐рддрд┐ рдкреИрджрд╛ рд╣реЛрдЧреАред

рджрд╛рдпрд░рд╛: рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ (рдЖрдпрд╛рдд / рдирд┐рд░реНрдпрд╛рдд)

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

рдЖрдк рдЗрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рддрд░реНрдХ рдХрд░рддреЗ рд╣реИрдВ?

рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕рдВрджрд░реНрдн рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХрдХреНрд╖рд╛ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдХреНрдпрд╛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрдХреНрд╖рд╛ 2 рдФрд░ рдХрдХреНрд╖рд╛ 3 рдХреЛ рдорд░реНрдЬ рдХрд░рддрд╛ рд╣реИ?

  • рдХреНрдпрд╛ Class1, Class2 рдФрд░ Class3 рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рд╕рднреА рдПрдХ рд╣реА рдорд╛рди рдХреЛ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИрдВ?
  • рдбрд┐рд╕реНрдХ рдореЗрдВ рдХреМрди рд╕реА рдлрд╛рдЗрд▓ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрддреА рд╣реИ?
  • рд╕рднреА рд╕рдорд░реНрдерд┐рдд рдкреНрд░рд╛рд░реВрдкреЛрдВ (amd, umd, commonjs, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд JavaScript рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛
// somefile.ts
import { MyAwesomeClass } from 'MyAwesomeClass1';

new mac = new MyAwesomeClass();
mac. // What methods are available here?

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

// somefile.ts
import { MyAwesomeClass } from 'MyAwesomeClass1';
import { MyAwesomeClass } from 'MyAwesomeClass2'; // or maybe import 'MyAwesomeClass2';
import { MyAwesomeClass } from 'MyAwesomeClass3'; // or maybe import 'MyAwesomeClass3';

new mac = new MyAwesomeClass();
mac. // What methods are available here?

@ рдбреЗрд╡рд┐рдб-рдбреНрд░рд┐рд╕реНрдХреЙрд▓ рдмрд╕ рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ рдпрд╣рд╛рдБ:

рдпрд╣ рдЕрдЪреНрдЫреА рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдиреА рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рдЕрд╕рд▓реА рд▓рд╛рдн рдХреНрдпрд╛ рд╣реИ?

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

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рджреЛ рдЪреАрдЬреЗрдВ рдкрд╕рдВрдж рд╣реИрдВ: 1. рдпрд╣ рд╣рдореЗрдВ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдЬрдЯрд┐рд▓ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдЪрд╛рдирдХ рдкреНрд░рдмрдВрдзрдиреАрдп рд╣реЛред 2. рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдЕрддреНрдпрдВрдд рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрдЯрд░реНрди рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕реЗ рд▓реЛрдЧ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреА рд╕реАрдорд╛ рдХреЗ рдмрд┐рдирд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рдереЗ)ред

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

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

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

рдФрд░ рдирд╣реАрдВ: рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рд╣реЛрдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ C# рдЙрдирдХреЗ рдкрд╛рд╕ рд╣реИред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рд┐рд░реНрдл рдЗрд╕реЗ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдпрд╣ рд╣реИред

рдФрд░ рдЕрдВрдд рдореЗрдВ: рдЖрдкрдХреЛ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ?

@greendimka рдореИрдВ рдХрд┐рд╕реА рднреА рд╢рддреНрд░реБрддрд╛ рдХреЛ рдврд╛рд▓:ред рдореИрдВ рдмрд╕ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдпрд╛ рдЕрдЧрд░ рдХреБрдЫ рд╣реИрдВ рддреЛ рдореИрдВ рдЕрдирдЬрд╛рди рд╣реВрдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИ!

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

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

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

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

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

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

@ рдбреЗрд╡рд┐рдб-рдбреНрд░рд┐рд╕реНрдХреЙрд▓, рдмреЗрд╣рдж рдХрдареЛрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рдЧрддрд┐ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЦрдбрд╝рд╛ рд╣реВрдВред

рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕реНрдерд┐рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░ рд╕рдХреВрдВред

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

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

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдпрджрд┐ рд╣рдо рдПрдХ рд╡рд░реНрдЧ рд╡реНрдпрдХреНрддрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдм рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдЖрдзрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗред рд╕рднреА рдЙрддреНрдкрдиреНрди рдХреЛрдб рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рдЦрд╛рд▓реА рд╡рд░реНрдЧ рд╡реНрдпрдХреНрддрд┐ рднреА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдкрд░реНрд╕рдирдмреЗрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд░реНрдЧ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред рдлрд┐рд░ рд╣рдо рдЕрдкрдиреЗ рд╕рднреА рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдХреЛ PersonBase рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рдХрд╕реНрдЯрдо рдХреЛрдб рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ Person рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрддреНрдкрдиреНрди рд╕рдВрджрд░реНрдн рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВ рди рдХрд┐ рд╡реНрдпрдХреНрддрд┐ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВред рдЗрд╕ рддрд░рд╣ рд╕рднреА IntelliSense рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред

рдлрд╝рд╛рдЗрд▓ 1: рдмреЗрд╕ рдХреНрд▓рд╛рд╕

module ViewModels {
    export class PersonBase {
        // Generated members
        public anotherPerson: Person;
        constructor(){
            // Generated constructor code
        }
    }
}

рдлрд╝рд╛рдЗрд▓ 2: рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд░реНрдЧ

module ViewModels {
    export class Person extends PersonBase {
        // Custom methods
        public NewVariable: string = "NewVar";
        constructor() {
            super();
            // Custom constructor code
        }
    }
}

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

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

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

Foo.prototype.someFunction = function() {/*....*/}

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

@RyanCavanaugh рдЖрдк рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдорд╛рдВрдЧреА рдЧрдИ рд╣рд░ рдЪреАрдЬ рдХреЛ рдЕрдиреНрдп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

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

рддреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдХреИрд╕реЗ рдЬрд╛рдПрдЧрд╛ ?:
File1.ts:

// Imagine this file is code generated and could be regenerated during development
export partial class Contact
{
    firstName: string;
    lastName: string;
    partial OnInit( args: any ) : void;
    constuctor( args: any )
    {
        this.OnInit( args );
    }
}
export class Address
{
    addr: string;
    city: string;
    state: string;
    zip: string;
}

File2.ts

// See where I'm going with this? This file would be hand edited and allows me to specify associations and children.
partial class Contact
{
    Addresses: string[] = [];
    partial OnInit( args: any ) void
    {
        this.firstName = args.firstName;
        this.lastName = args.lastName;
        this.Addresses.push( new Address() );
    }
}

рдЙрдкрд░реЛрдХреНрдд рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рд╕рдВрдкрд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреЗрдПрд╕ рдХреНрд▓рд╛рд╕ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░реЗрдЧрд╛, рдРрд╕рд╛ рдХреБрдЫ:

var Contact = (function () {
    function Contact() {
         this.Addresses = [];
   }
   Contact.prototype.constuctor = function (args) {
       this.OnInit( args );
   };
   Contact.prototype.OnInit = function (args) {
       this.firstName = args.firstName;
       this.lastName = args.lastName;
       this.Addresses.push(new Address());
   };
   return Contact;
})();

var Address = (function () {
    function Address() {
    }
    return Address;
})();

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдВрдд рдореЗрдВ рдореБрдЭреЗ рд╕рдВрдкрд░реНрдХ рдирд╛рдордХ рдПрдХ рд╡рд░реНрдЧ рдЪрд╛рд╣рд┐рдП рдФрд░ рдореИрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧреЛрдВ рдХреЛ рддреАрд╕рд░реЗ рдореЗрдВ рдЙрдк-рд╡рд░реНрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@cosmoKenney

рдпрд╣рд╛рдВ рдХреБрдЫ рдРрд╕рд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ partial рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рди рд╣реИред

// address.ts
export class Address
{
    addr: string;
    city: string;
    state: string;
    zip: string;
}
// contact.impl.ts
import { Address } from './address';

// Class implementation, do the things here that are not code generated
export class Contact {
    firstName: string;
    lastName: string;
    addresses: Address[];
    constructor(args: any) {
        this.onInit(args);
    }
}
// extending the interface here
// define methods you know will need in the constructor only
// This only applies to the constructor however
export interface Contact {
    onInit(args: any): void;
}
// contact.partial.ts
import { Contact } from './contact.impl';

// Implement the extended contract here
Contact.prototype.onInit = function(this: Contact, args: any) {
    this.addresses = args.addresses.concat();
    // do stuff;
};

// Adding another method (not part of the extended interface)
Contact.prototype.somethingAwesome = function(this: Contact) {
    // do awesome stuff here
};

// Tell TypeScript "I added this here!!!!"
declare module './contact.impl' {
    interface Contact {
        somethingAwesome();
    }
}
// contact.ts
import { Contact } from './contact.impl';
import './contact.partial';

// Bring it all together (perhaps there are more than one partial class?)
export { Contact };
// main.ts
import { Contact } from './contact';

// use the contact!
const contact = new Contact(['my', 'args']);
const {firstName, lastName} = contact;
contact.somethingAwesome();

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

@ рдбреЗрд╡рд┐рдб-рдбреНрд░рд┐рд╕реНрдХреЙрд▓ рд╡рд╛рд╣ред рдореЗрд░рд╛ рд╕рд┐рд░ рдмрд╕ рдлрдЯ рдЧрдпрд╛ред

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

@greendimka

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

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

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

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

рдЕрд░реНрдерд╛рдд:

// address.partial.ts
export interface IAddress
{
    addr: string;
    city: string;
    state: string;
    zip: string;
}

// address.ts
import { IAddress } from './address.partial';

export class Address
{
    constructor(args: any) {

    }
}
export interface Address extends IAddress{}

// contact.partial.ts
import { IAddress } from './address.partial';

export interface IContact {
    firstName: string;
    lastName: string;
    addresses: IAddress[];
}

// contact.ts
import { Address } from './address';
import { IContact } from './contact.partial';

// Class implementation, do the things here that are not code generated
export class Contact {
    addresses: Address[] = [];

    constructor(args: any) {
        this.firstName = args.firstName;
        this.lastName = args.lastName;
        this.addresses.push( new Address("address?") );
    }

    public somethingAwesome() {
        //
    }
}
export interface Contact extends IContact {}

// main.ts
import { Contact } from './contact';

const contact = new Contact(['my', 'args']);
const {firstName, lastName} = contact;
contact.somethingAwesome();

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

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

@greendimka , @david-driscoll
рдореИрдВрдиреЗ рдКрдкрд░ рд╕реЗ рдбреЗрд╡рд┐рдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ ts рдХреЛ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛:

C:\TestProjects\TypeScriptFakePartialClassTest>tsc -m amd address.partial.ts address.ts contact.partial.ts contact.ts main.ts
address.ts(4,14): error TS2300: Duplicate identifier 'Address'.
address.ts(10,18): error TS2300: Duplicate identifier 'Address'.
contact.ts(7,14): error TS2300: Duplicate identifier 'Contact'.
contact.ts(11,14): error TS2339: Property 'firstName' does not exist on type 'Contact'.
contact.ts(12,14): error TS2339: Property 'lastName' does not exist on type 'Contact'.
contact.ts(20,18): error TS2300: Duplicate identifier 'Contact'.
main.ts(5,8): error TS2459: Type 'Contact' has no property 'firstName' and no string index signature.
main.ts(5,19): error TS2459: Type 'Contact' has no property 'lastName' and no string index signature.

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ @greendimka рд╕реЗ рд╕рд╣рдордд

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

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

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

рдФрд░ рдЗрд╕реА рддрд░рд╣...

@greendimka рдиреАрдЪреЗ рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рджреЗрдЦреЗрдВ: (рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕реЗ @WoLfulus рдкрд░ рд▓рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ @greendimka):

рдпрджрд┐ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдП рдкрд░ рдХрдХреНрд╖рд╛ рдХреЗ рднрд╛рдЧ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдмреА рдкрд░ рднрд╛рдЧ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЯреНрд░рд╛рдВрдкрд┐рд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдкреВрд░реНрдг рдХрдХреНрд╖рд╛ рдореЗрдВ рдХреМрди рд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдПрдХ рдирдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

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

рдХреНрдпрд╛ рдЖрдВрд╢рд┐рдХ рд╕рд╛рдордЧреНрд░реА рд╡рд╛рд▓реА рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рд╣реА рдХрдХреНрд╖рд╛ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреА рд╣реИрдВ?

рдпрд╣ рдкрд╣рд▓реЗ рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдХрд╛рдлреА рд╣рдж рддрдХ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЕрдЧрд░ рдореБрдЭреЗ рдЙрди рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдореБрдЦреНрдп рдлрд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рд╕реЗ рдХреИрд╕реЗ рдмрдЪреЗрдВ?

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рдХреНрдпрд╛ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рд╣реИ?

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЕрдзрд┐рдХ рдЪреАрдЬреЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ?

рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджрд┐рдЦрддреАред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдпрджрд┐ B.ts рдореЗрдВ рдЖрдВрд╢рд┐рдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЧреИрд░-рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рджреЛрдиреЛрдВ рд╣реИрдВ, рддреЛ B.js рдореЗрдВ рдКрдкрд░ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ рдбрд┐рдмреНрдмрд╛рдмрдВрдж рдЯрд┐рдкреНрдкрдгреА рдФрд░ рдЧреИрд░-рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд╕рд░рд▓, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

рдирд╛рдо рд╡рд┐рд░реЛрдз рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ?

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

@WoLfulus , @cosmoKenney рдиреЗ рдЕрдЪреНрдЫрд╛ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рд╣реИред рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдкреНрд░рд╢реНрди (рдП рдФрд░ рдмреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ) рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП: рдПрдХ рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╣реИред рдЗрд╕рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ A рдореЗрдВ рдРрд╕рд╛ рдХреЛрдб "рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ X" рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ B рдореЗрдВ рдРрд╕рд╛ рдХреЛрдб "рдЖрдВрд╢рд┐рдХ (fileX) рд╡рд░реНрдЧ X" рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ fileX.js рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред

@cosmoKenney

рдЕрдЧрд░ рдореБрдЭреЗ рдЙрди рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдореБрдЦреНрдп рдлрд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рд╕реЗ рдХреИрд╕реЗ рдмрдЪреЗрдВ?
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рдХреНрдпрд╛ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рд╣реИ?

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рдирд╣реАрдВ рд╣реИред

@greendimka

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

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

@WoLfulus , @cosmoKenney рдиреЗ рдЕрдЪреНрдЫрд╛ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рд╣реИред рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдкреНрд░рд╢реНрди (рдП рдФрд░ рдмреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ) рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП: рдПрдХ рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╣реИред рдЗрд╕рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ A рдореЗрдВ рдРрд╕рд╛ рдХреЛрдб "рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ X" рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ B рдореЗрдВ рдРрд╕рд╛ рдХреЛрдб "рдЖрдВрд╢рд┐рдХ (fileX) рд╡рд░реНрдЧ X" рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ fileX.js рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ред

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

рдбреЙрдиреНрд╕ рдлреНрд▓реЗрдорд╕реВрдЯ

TL; DR: рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЯрд┐рдкреНрдкрдгреА рд╕рдВрдЦреНрдпрд╛ 189 рдкрд░ рдиреАрдЪреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рджрд░реНрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдкрд╣рд▓реЗ рдкреВрд░рд╛ рдзрд╛рдЧрд╛ рдкрдврд╝реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдгреЛрдВ рдХреЛ рдКрдкрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреА рд╣рдорд╛рд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  • рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ implements , рдЖрджрд┐) рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ "ES6 + рдкреНрд░рдХрд╛рд░" рд╣реЛрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛ред . рдХрд┐ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рд╣рдорд╛рд░реА рдЧрд▓рддреА (рд╣рдорд╛рд░реЗ рдореВрд▓ рдбрд┐рдЬрд╛рдЗрди рджрд┐рд╢рд╛ рдЖрдо рддреМрд░ рдкрд░ рднреА рдерд╛ OOP) рдФрд░ рдЙрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ ES6 рдХреА рдЧрд▓рддреА (рд╡рд░реНрдЧ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╛рдВрдЪ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдПрдХ рдмрд╣реБрдд рдЪрд╛рд░реЛрдВ рдУрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдФрд░ рд╣рдо рд╣реИ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╣реЛрдиреЗ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ) рд╣реИред рдПрдХ рдФрд░ рдЯреАрдПрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝рдирд╛ рдКрдВрдЯ рдХреА рдкреАрда рдкрд░ рдПрдХ рдФрд░ рддрд┐рдирдХрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рднрд╡рд┐рд╖реНрдп рдореЙрдбреНрдпреВрд▓ рд╣реИред рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рдХреЗрд╡рд▓ "рд╡реИрд╢реНрд╡рд┐рдХ рд╕реВрдк" рдореЙрдбрд▓ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИрдВ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддреА рд╣реИрдВред рдХрдИ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЖрдкрджрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреБрд╕реНрдЦрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдбрд┐рдВрдЧ рдСрд░реНрдбрд░ рдЕрдиреБрдорд╛рдирд┐рдд рдирд╣реАрдВ рд╣реИред рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдирд╛ рдЬреЛ рдХреЗрд╡рд▓ рд╡реИрд╢реНрд╡рд┐рдХ-рдХреЗрд╡рд▓ рдмреНрд░рд╣реНрдорд╛рдВрдб рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд╕рдордп рдХрд╛ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИред
  • рд╕реА # рдореЗрдВ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣рд╛рдВ рд╕реА # рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИрдВред рдЧрдВрднреАрд░рддрд╛ рд╕реЗ!
  • "рдЬрдирд░реЗрдЯреЗрдб рдХреЛрдб" рдкрд░рд┐рджреГрд╢реНрдп рдЧреБрдгреЛрдВ рдкрд░ рд╕рдореНрдореЛрд╣рдХ рдирд╣реАрдВ рд╣реИред рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдкреНрд░рд╢рдВрд╕рдиреАрдп рдЙрддреНрд╕рд░реНрдЬрди рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рд╛рд░рдВрднрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛрдб рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдШреЛрд╖рдгрд╛ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджреЗрдЧрд╛, рдФрд░ рдпрд╣ .Designer.cs -рд╕реНрдЯрд╛рдЗрд▓ рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдбреАрд▓рдмреНрд░реЗрдХрд░ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдФрд░ рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рджреЛрдиреЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрднрдХрд░реНрддрд╛ рдпрд╛ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА .
  • JS - рдорд┐рдХреНрд╕рд┐рдиреНрд╕, Object.assign , рдЖрджрд┐ рдореЗрдВ рдХрдИ, рдХрдИ рдЕрдиреНрдп рдХрдВрдкреЛрдЬрд┐рдЯрд▓ рдореИрдХреЗрдирд┐рдЬреНрдо рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЬрд┐рд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдХрд╛рд░рдг C# рдореЗрдВ рдпрд╣ рдлреАрдЪрд░ рдЖрдпрд╛, рд╡рд╣ рдЙрди рдмрд╛рдзрд╛рдУрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛ рдЬреЛ рдмрд╕ JS рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВред
  • interface + prototype.method = ... рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рдЬреЗрдирд░реЗрдЯ-рдХреЛрдб рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдареАрдХ рд╡реИрд╕реЗ рд╣реА рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ partial class рдХрд░реЗрдЧрд╛ред рдЙрд╕ рдХреЛрдб рдХреЛ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЕрдЬреАрдм рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕реНрдкреНрд▓рд┐рдЯ-рдлрд╛рдЗрд▓ рдЬрдирд░реЗрдЯреЗрдб рдХреЛрдб рд╕реЗрдЯрдЕрдк рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ (рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ) рддреЛ рд╡рд╣ рддрд░реАрдХрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ .
  • рд╣рдо ES6 рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП "рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рдХрд╛ рдордзреНрдпрд╕реНрде рдорд╛рдирддреЗ рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ (рд╕реА # рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЕрдкреАрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЧреИрд░-рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреБрдЫ рдРрд╕рд╛ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдЬреЛ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдкрд╛рд░реНрдХ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ TC39 рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреБрдж рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╡рд╣ рдХрд░реНрд╖рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рдореЗрдВ рдЙрд╕ рдкрд░ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рд╡рдЬрди рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд░рдбрд╛рд░ рдкрд░ рднреА рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

@RyanCavanaugh рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ + рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк.рдореЗрдереЛрдб = ... рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЬреЗрдирд░реЗрдЯ-рдХреЛрдб рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдХреЛ рднреА рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред

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

@cosmoKenney рдХреНрдпрд╛ рдЖрдк рд╡рд╣ рд╕рд╛рдЗрдЯ рд╣реИрдВ

рдпрд╣ рд╕реБрдирдХрд░ рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣рд╛рдВ рдХрд┐рдП рдЧрдП рдбрд┐рдЬрд╛рдЗрди рдирд┐рд░реНрдгрдпреЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдкреНрд░рд╢реНрди рд╣реИрдВ рдпрджрд┐ рдпрд╣ рдареАрдХ рд╣реИ:

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

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

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

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

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

рд╕рдЪреНрдЪреА рдореЗрдВ? рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЗ рдореБрдЦреНрдп рдореВрд▓ рдирд┐рдХрд╛рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдореБрдЭреЗ рдиреЗрдорд╕реНрдкреЗрд╕ рдкрд╕рдВрдж рд╣реИ рдФрд░ рдЕрдЧрд░ рдареАрдХ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕реВрдк рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд▓рдЧрднрдЧ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд┐рдВрдЧ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред https://github.com/Microsoft/TypeScript/issues/420 рдЬреИрд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреБрдЫ рд╕рд╛рдорд╛рди рдХреЗрд╡рд▓ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рдФрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдВрдЧреЗред рдХреНрдпрд╛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдирд╛рдо рд╕реНрдерд╛рди рдмрд╣рд┐рд╖реНрдХрд░рдг рдХреА рд░рд╛рд╣ рдкрд░ рд╣реИрдВ?

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

рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рдХреНрдпрд╛ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдмрд╣реБрдд рд╕реА рдЧрд▓рддрдлрд╣рдорд┐рдпрд╛рдВ рднреА рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдирд┐рд░реНрдорд╛рдг рд╣реИ, рдФрд░ рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рдЕрдиреБрдкрд╛рдд рд╕реЗ рдмрд╛рд╣рд░ рдЙрдбрд╝рд╛ рд░рд╣рд╛ рд╣реИ:
https://msdn.microsoft.com/en-us/library/wa80x488.aspx

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

рдпрд╣ рдПрдХ рднрд╛рд╖рд╛ рдХрд╛ рдкреБрдирд░реНрд▓реЗрдЦрди рд╣реЛрдЧрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдб рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ "рдмрд╕ рдореБрдЭреЗ рднрдпрд╛рдирдХ рд╕рд╛рдорд╛рди рджреЗрдВ" рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рд▓рдХреНрд╖реНрдпреЛрдВ рд╕реЗ рдмрд╣реБрдд рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдХрдорд╛рд▓ рдХреА рдЪреАрдЬреЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдВрд░реЗрдЦрдг рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рднрд╛рд╖рд╛ рдЪреБрдирдиреА рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ CoffeeScript , Dart , рдпрд╛ Haxe ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдРрд╕реЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЧреЛрдж рд▓реЗрдиреЗ рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдРрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ...

рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рддрд╛ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рдо рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИрдВ, рд╢рд╛рдпрдж рдЙрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

partial рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдЙрд╕рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВред рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдмрд╣реБрдд рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╛рдиреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдЖрдкрдХреЛ рдЪреБрдирдирд╛ рдФрд░ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ред

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

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

(рдУрд╣ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2.2 рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдорд┐рдХреНрд╕рд┐рди рдХреНрд▓рд╛рд╕реЗрд╕ рдЖрдкрдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрд░реВрд░рдд рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ)

interface Base {}

interface Constructor<T> {
    new (...args: any[]): T;
    prototype: T;
}

interface PartialClass {
    foo(): void;
}

function PartialClass<B extends Constructor<Base>>(base: B): B & Constructor<PartialClass> {
    return class extends base {
        foo() {
            console.log('foo');
        }
    };
}

class MyBase {
    bar() {
        console.log('bar');
    }
}

const MyPartialBase = PartialClass(MyBase);

const instance = new MyPartialBase();

instance.bar();
instance.foo();

@kitsonk рдорд┐рд╢реНрд░рдг рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдирд╣реАрдВ рд╣реИрдВред

  • рдорд┐рдХреНрд╕рд┐рди рд╕реНрд╡-рдирд┐рд╣рд┐рдд рдЗрдХрд╛рдЗрдпрд╛рдБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореМрдЬреВрджрд╛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрдВрд╢рд┐рдХ рд╕реЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдЙрд╕реА рд╡рд░реНрдЧ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдВред

рдПрдХ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдорд┐рдХреНрд╕рд┐рди рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

partial class Point {
  readonly x: number;
  readonly y: number;
}

partial class Point {
  translate(dx: number, dy: number): Point {
    return new Point(this.x + dx, this.y + dy);
  }
}

рдПрдХ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдорд┐рдХреНрд╕рд┐рди рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

рддреЛ рдореБрджреНрджреЗ рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ... рддреЛ рдХрд┐рд╕реА рднрд╛рд╖рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдЖрд╕рд╛рди рд╣реИ:

class Point {
  readonly x: number;
  readonly y: number;
  translate(dx: number, dy: number): Point {
    return new Point(this.x + dx, this.y + dy);
  }
}

(рдФрд░ рдЕрдЧрд░ рд╣рдо рдкреВрд░реНрдгрд╡рд╛рджреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ, рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рд▓

interface PointBase {
    x: number;
    y: number;
}

interface Constructor<T> {
    new (...args: any[]): T;
    prototype: T;
}

interface TranslatePointPartial {
    translate(dx: number, dy: number): TranslatePointPartial;
}

function TranslatePointPartial<B extends Constructor<PointBase>>(base: B): B & Constructor<TranslatePointPartial> {
    return class TranslatePointPartial extends base {
        translate(dx: number, dy: number): TranslatePointPartial & PointBase {
            return new TranslatePointPartial(this.x + dx, this.y + dy);
        }
    };
}

class Point {
    readonly x: number;
    readonly y: number;
}

const MyPoint = TranslatePointPartial(Point);

const instance = new MyPoint();

instance.x;
instance.y;
instance.translate(1, 2);

@ рд╣рд╛рдереА-рдкреЛрдд

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

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

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

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдиреЗрдорд╕реНрдкреЗрд╕ рдХрд╣реАрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд╡реЗ рдХреЗрд╡рд▓ рдПрдХ рдкреИрдЯрд░реНрди рдХрд╛ рдирд╛рдордХрд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИ рдФрд░ рд╡реЗ рдЕрднреА рднреА ES6 рдореЙрдбреНрдпреВрд▓ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддреЗ рд╣реИрдВред рдореЙрдбреНрдпреВрд▓ рд╡реИрд╕реЗ рд╣реА рддреЗрдЬреА рд╕реЗ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд▓реЛрдЧ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдлрд╛рдпрджреЗ рд╣реИрдВред рдореИрдВ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЙрд╕ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рд▓рдЧрднрдЧ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдФрд░ рдПрдХ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдирдП рд╕рдВрдЧрдардирд╛рддреНрдордХ рдкреИрдЯрд░реНрди рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЕрдЬреАрдм рд╣реЛрдЧрд╛ рдЬреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИред рдпрджрд┐ рджреБрдирд┐рдпрд╛ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣реА рдереА рдФрд░ рд╣рд░ рдХреЛрдИ "рд▓реЛрдб рдкрд░ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрдпрд╛рдирдХ рд╣реИрдВ, рддреЛ рд╣рд░ рдХреЛрдИ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ prototype s рдкрд░ рдкрд╛рд░реНрдЯреА рдХрд░рддрд╛ рд╣реИ", рд╢рд╛рдпрдж рд╣рдо рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░рддреЗред

@RyanCavanaugh

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

рдзрдиреНрдпрд╡рд╛рдж

рдпрд╣рд╛рдВ рд╡рд╣реА рдмрд╛рдд рд╣реИ, рд╣рдо рдЕрдкрдиреЗ рд╕реА # рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ "рдкреНрд░реЙрдХреНрд╕реА" рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

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

@RyanCavanaugh

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

@kitsonk

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

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

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

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

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

рдореИрдВ

@RyanCavanaugh , рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдорджрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИред рдФрд░ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВ рдорд┐рдХреНрд╕рд┐рдиреНрд╕ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реВрдБред рдпрд╛ рд╕рд┐рд░реНрдл рд╡рд┐рд░рд╛рд╕рдд, рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдиреА рдЬрд▓реНрджреА рдореЗрдВ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЬреЗрдиреЗрд░рд┐рдХ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рд╣рдореНрдо...
рд╡рд┐рд░рд╛рд╕рдд рдФрд░ рдирд╛рдордХрд░рдг рдХреЗ рд╕рд╛рде, рдореИрдВ рдпрд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

class AddressBase // this is a code generated class
{
    public address: string;
    public city: string;
    public state: string;
    public zip: string;

    constructor( jsonFromService: any )
    {
        this.OnInit( jsonFromService );
    }

    OnInit( jsonFromService: any )
    {
        // could use Object.assign here
        this.address = jsonFromService.address;
        this.city = jsonFromService.city;
        this.state = jsonFromService.state;
        this.zip = jsonFromService.zip;
    }
}

class ContactBase // this is also a code generated class
{
    public firstName: string;
    public lastName: string;

    constructor( jsonFromService: any )
    {
        this.OnInit( jsonFromService );
    }

    OnInit( jsonFromService: any )
    {
        // could use Object.assign here
        this.firstName = jsonFromService.firstName;
        this.lastName = jsonFromService.lastName;
    }
}

// classes that extend the functionality of the code generated classes:
class Address extends AddressBase // subclass simply because I don't want to have to use AddressBase all over my codebase, and then refactor if I ever extend the class
{
}

class Contact extends ContactBase
{
    public Addresses: Address[] = []; // THIS is the customization/extension that cannot be code generated.

    OnInit( jsonFromService: any )
    {
        // note that jsonFromService receives a dto with a array of address info
        super.OnInit( jsonFromService );

        for ( let addr of jsonFromService.Addresses )
        {
            this.Addresses.push( new Address( addr ) );
        }
    }
}

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

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

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкреНрд░рд▓реЗрдЦрди рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЦрд░рд╛рдм рдкрд░рд┐рднрд╛рд╖рд╛ рджреЗрддрд╛ рд╣реИ (рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдпрд╣рд╛рдВ: https://www.typescriptlang.org/docs/handbook/mixins.html )ред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:

рдлрд╝рд╛рдЗрд▓ "Point.generated.ts":

partial class Point {
   readonly x: number;
   readonly y: number;
}

рдлрд╝рд╛рдЗрд▓ "Point.codeByHand.ts":

partial class Point {
  constructor(x: number, y: number) {
      this.x = x;
      this.y = y;
  }

  translate(dx: number, dy: number): Point 
  {
      return new Point(this.x + dx, this.y + dy);
  }
}

рд╡реЗ "рдкреНрд╡рд╛рдЗрдВрдЯ.рдЬреЗрдПрд╕" рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ - рдФрд░ рдирд╛рдо рдПрдХ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рд╕реЗ рдЖрддрд╛ рд╣реИ, рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдо рд╕реЗ рдирд╣реАрдВ:

var Point = (function () {
    function Point(x, y) {
        this.x = x;
        this.y = y;
    }
    Point.prototype.translate = function (dx, dy) {
        return new Point(this.x + dx, this.y + dy);
    };
    return Point;
}());

рдорд┐рдХреНрд╕рд┐рди, рдЬрдм "рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧреЛрдВ" рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдФрд░ рдореБрдЭреЗ рджреГрдврд╝рддрд╛ рд╕реЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЗрд╕ рд╢рдмреНрдж рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрд╣реБ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ ( https://en.wikipedia.org/wiki/Multiple_inheritance )ред

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

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

TS рдЯреАрдо рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ TS-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреАред рдпрджрд┐ рдЖрдк рдФрд░ рдЕрдзрд┐рдХ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣рд╛рдВ рдПрдХ рдмреЗрд╣рддрд░ рдЬрдЧрд╣ рд╣реИ: https://esdiscuss.org/topic/class-syntax-enhancements

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ TC39 рдХреА рддрд░рдл рдПрдХ GitHub рд░реЗрдкреЛ рд╣реИ рдЬреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

@greendimka

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

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

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

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

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

рд╡реЗ рддрдм рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдмрдпрд╛рдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдЬрдм рдпрд╣ рд╡рд┐рд░рд╛рд╕рдд рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рддреЛ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рднрдВрдЧреБрд░ рдФрд░ рдЖрджреЗрд╢ рдкрд░ рдирд┐рд░реНрднрд░ рдмрдирд╛рддрд╛ рд╣реИред

рдпрд╣ рд╕рд┐рд▓рд╕рд┐рд▓рд╛ рдЖрдЧреЗ рднреА рдЬрд╛рд░реА рд░рд╣ рд╕рдХрддрд╛ рд╣реИ...

@cosmoKenney

рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдХреИрд╕реЗ рдХреБрдЫ рдЬрдЯрд┐рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрдард┐рди рднрд╛рд╖рд╛ рдореЗрдВ рдорд┐рд▓ рдЧрдпрд╛, рдФрд░ рдлрд┐рд░ рднреА рд╣рд░ рдХреЛрдИ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд╛рд▓рд┐рддреНрдп рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реА # рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореБрдЭреЗ рд╕рдЪ рдореЗрдВ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рд╣реА рд╣реИред рд╣рд░ рдХреЛрдИ рд╕реА #, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ ЁЯШЫ рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред

@aluanhaddad

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЧрд▓рдд рд╕рдордЭ рд░рд╣реЗ рд╣реИрдВ ...

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

@greendimka

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

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

рдУрд╣ рдпрд╛рд░! рдХреБрдЫ рд▓реЛрдЧ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рдПрдХ рдХрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдареАрдХ рд╣реИ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЛрдИ рдХрдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдХреНрд╖рд╛рдПрдВред рдЬреЛ рдХреБрдЫ рднреАред рдЬреЛ рднреА рд╣реЛред

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╡рд╣реА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рдЕрд╕рдВрдЧрддрд┐ рд╣реЛрддреА рд╣реИ рдФрд░ рдЖрдкрд╕реА рд╕рдордЭ рдореЗрдВ рдмрд╛рдзрд╛ рдЖрддреА рд╣реИред
рдкреВрд░реНрдгрддрдпрд╛ рд╕рд╣рдордд!

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

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

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЧрд▓рддрдлрд╣рдореА рдФрд░ рдЧрд▓рдд рд╕рдВрдЪрд╛рд░ рдЕрдЪреНрдЫреА рдЪреАрдЬреЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрднреА рднреА рдЖрдкрд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

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

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

B. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд▓рд╛рд╕реЗрд╕ рдХреНрдпрд╛ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреВрд╕рд░реЛрдВ рд╕реЗ рд╕реАрдЦрдирд╛ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рд╡рд┐рд░реЛрдзреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

@aluanhaddad
рдпрд╛рд░ рдЕрд░реЗ рдпрд╛рд░ред рд╕рдореАрдХрд░рдг рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рдЧ рдХреА рдкрд░рд╡рд╛рд╣ рдХреМрди рдХрд░рддрд╛ рд╣реИ? рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдКрдкрд░ рдХреА рдПрдХ рдкрд░рдд рд╣реИ, рдпрд╛ рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдк рдЗрд╕реЗ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдкреБрд░рд╛рдиреА 4GL рдмрдирд╛рдо 3GL рдЪрд░реНрдЪрд╛рдПрдВ рдпрд╛рдж рд╣реИрдВ? рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 4GL рдПрдХ 3GL рдХреЗ рд▓рд┐рдП рд╣реИ, рдПрдХ рддрд░рд╣ рдХрд╛ред рдпрд╣ рднреА рддрд░реНрдХ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдордЬрдмреВрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде ES6 рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдВрд╢рд┐рдХ рд╡рд░реНрдЧ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реЛрдбрдореИрдк рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, LAME рд╣реИред рд╣рдореЗрдВ рдорд┐рдХреНрд╕рд┐рдиреНрд╕, рдЬреЗрдирд░рд┐рдХ, рдореЙрдбреНрдпреВрд▓реНрд╕, рдиреЗрдо рд╕реНрдкреЗрд╕реЗрд╕ рдФрд░ рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдорд┐рд▓реЗред рддреЛ рдХреНрдпреЛрдВ рди рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ?

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

@cosmoKenney "рдЗрд╕рдХрд╛ рд╕рд┐рд░реНрдл ES.next рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде" рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рдХреНрд░рдп рдмрд┐рдВрджреБ рд╣реИ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдЖрдк рдХреБрдЫ рдФрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЧрд▓рдд рднрд╛рд╖рд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдмрдЬрд╛рдп Scala.js рдЖрдЬрд╝рдорд╛рдПрдВ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореБрдЭреЗ рдмрд╕ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╣рд╕рд╛рд╕ рдерд╛ рдХрд┐ ES.next рдореЗрдВ рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдПрдХ рдХрд╕реНрдЯрдо рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рддреБрдо рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реЛ

import {MyClass} from './myclass.*'

рд▓реЛрдбрд░ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рд╕реЗ рд╕рднреА рдирд┐рд░реНрдпрд╛рддрд┐рдд MyClass рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдорд░реНрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдЙрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

@spion рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ ES.next рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ ES рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░, рдЬреИрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдпрд╛ рд▓реЛрдбрд░ рдкреЙрд▓реАрдлрд╝рд┐рд▓, рдЬреИрд╕реЗ рдХрд┐ SystemJS, рддрдм рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрддрд░ рдкрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдердорд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдореМрдЬреВрджрд╛ рдЯреВрд▓ рдЬреИрд╕реЗ рд▓реЛрдбрд░ рдФрд░ рдкреИрдХреЗрдЬрд░реНрд╕ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдпреЗ рд╕рднреА рдЙрдкрдХрд░рдг рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрди рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд░рд╣реЗрдЧрд╛ред

рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ Scala.js . рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВ

@cosmoKenney

рд╣рдореЗрдВ рдорд┐рдХреНрд╕рд┐рдиреНрд╕, рдЬреЗрдирд░рд┐рдХ, рдореЙрдбреНрдпреВрд▓реНрд╕, рдиреЗрдо рд╕реНрдкреЗрд╕реЗрд╕ рдФрд░ рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдорд┐рд▓реЗред рддреЛ рдХреНрдпреЛрдВ рди рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ?

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ рдорд┐рдХреНрд╕рд┐рди рдПрдХ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рд╣реИ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ _types_.

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

рдореЙрдбреНрдпреВрд▓ рдПрдХ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рд╣реИред

рдиреЗрдорд╕реНрдкреЗрд╕ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдиреА рдФрд░ рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ рд╣реИред

рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

@aluanhaddad рдЖрдк рдЗрд╕реЗ рд░рди-рдЯрд╛рдЗрдо рдЪреАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рдмрдирд╛рддреЗ рд░рд╣рддреЗ рд╣реИрдВ? рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рдФрд░ рд╡реЗ рд╕рднреА рдЬрд┐рдирдХрд╛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред

+1

@cosmoKenney

@aluanhaddad рдЖрдк рдЗрд╕реЗ рд░рди-рдЯрд╛рдЗрдо рдЪреАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рдмрдирд╛рддреЗ рд░рд╣рддреЗ рд╣реИрдВ? рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рдФрд░ рд╡реЗ рд╕рднреА рдЬрд┐рдирдХрд╛ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред

рд╡рд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред

SystemJS рдФрд░ Webpack рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХ рддрдВрддреНрд░ рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рдЖрдк рдЕрдиреНрдпрдерд╛ рджреЗрдЦреЗрдВрдЧреЗред

рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ, рдФрд░ рд░реЙрдХ рд╕реЙрд▓рд┐рдб рдЧрд▓реНрдк рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмреАрдЪ рдкрддреНрд░рд╛рдЪрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред

+1

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

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

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

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

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

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

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

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