JavaScript рднрд╛рд╖реЗрдордзреНрдпреЗ рдкреНрд░рдХрд╛рд░ рдорд╛рд╣рд┐рддреАрд╕рд╣ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдЬреЛрдбрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЖрд╣реЗ

рдорд╛рдпрдХреНрд░реЛрд╕реЙрдлреНрдЯ, рдЗрдЧрд╛рд▓рд┐рдпрд╛ рдЖрдгрд┐ рдмреНрд▓реВрдордмрд░реНрдЧ рдпрд╛рдВрдиреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖реЗрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рд╡рд╛рдХреНрдпрд░рдЪрдиреЗрдкреНрд░рдорд╛рдгреЗрдЪ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд╛рдВрд╕рд╛рдареА JavaScript рддрдкрд╢реАрд▓рд╛рдордзреНрдпреЗ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреБрдврд╛рдХрд╛рд░ рдШреЗрддрд▓рд╛ рдЖрд╣реЗ. рд╕рдзреНрдпрд╛, ECMAScript рдорд╛рдирдХрд╛рдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗрд▓реЗрд▓реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрджрд▓ рдкреНрд░рд╛рдердорд┐рдХ рдЪрд░реНрдЪреЗрд╕рд╛рдареА (рд╕реНрдЯреЗрдЬ 0) рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдорд╛рд░реНрдЪрдордзреНрдпреЗ TC39 рд╕рдорд┐рддреАрдЪреНрдпрд╛ рдкреБрдвреАрд▓ рдмреИрдардХреАрдд, ECMA рдордзреАрд▓ рддрдЬреНрдЮ рд╕рдореБрджрд╛рдпрд╛рдЪреНрдпрд╛ рд╕рд╣рднрд╛рдЧрд╛рд╕рд╣ рдкреНрд░рд╕реНрддрд╛рд╡рд╛рдЪреНрдпрд╛ рд╡рд┐рдЪрд╛рд░рд╛рдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рдЬрд╛рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрд╣реЗ.

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

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

JavaScript рднрд╛рд╖реЗрдордзреНрдпреЗ рдкреНрд░рдХрд╛рд░ рдорд╛рд╣рд┐рддреАрд╕рд╣ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдЬреЛрдбрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЖрд╣реЗ

рдкреНрд░рдХрд╛рд░рд╛рдВрдордзреНрдпреЗ, тАЬрд╕реНрдЯреНрд░рд┐рдВрдЧтАЭ, тАЬрдирдВрдмрд░тАЭ рдЖрдгрд┐ тАЬрдмреВрд▓рд┐рдпрдитАЭ рдЬреЛрдбрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЖрд╣реЗ, рдЬреНрдпрд╛рдЪрд╛ рдЙрдкрдпреЛрдЧ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕, рдлрдВрдХреНрд╢рди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕, рдСрдмреНрдЬреЗрдХреНрдЯ рдПрд▓рд┐рдореЗрдВрдЯреНрд╕, рдХреНрд▓рд╛рд╕ рдлреАрд▓реНрдбреНрд╕, рдЯрд╛рдЗрдк рдХреЗрд▓реЗрд▓реЗ рдЕреЕрд░реЗ (тАЬрд╕рдВрдЦреНрдпрд╛[]тАЭ) рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛рдирд╛ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рд╡рд┐рд▓реАрди рдХреЗрд▓реЗрд▓реЗ рдкреНрд░рдХрд╛рд░ (тАЬрд╕реНрдЯреНрд░рд┐рдВрдЧ | рд╕рдВрдЦреНрдпрд╛тАЭ) рдЖрдгрд┐ рдЬреЗрдиреЗрд░рд┐рдХрд╕рд╛рдареА рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рдЪрд╛ рджреЗрдЦреАрд▓ рдкреНрд░рд╕реНрддрд╛рд╡ рдЖрд╣реЗ. let x: string; рдлрдВрдХреНрд╢рди рдЕреЕрдб (a: рд╕рдВрдЦреНрдпрд╛, b: рд╕рдВрдЦреНрдпрд╛) { a + b рдкрд░рдд рдХрд░рд╛; } рдЗрдВрдЯрд░рдлреЗрд╕ рд╡реНрдпрдХреНрддреА { рдирд╛рд╡: рд╕реНрдЯреНрд░рд┐рдВрдЧ; рд╡рдп:рд╕рдВрдЦреНрдпрд╛; } рдлрдВрдХреНрд╢рди foo (x: T) { рдкрд░рддрд╛рд╡рд╛ x; } рдлрдВрдХреНрд╢рди foo(x: рд╕реНрдЯреНрд░рд┐рдВрдЧ | рд╕рдВрдЦреНрдпрд╛): рд╕реНрдЯреНрд░рд┐рдВрдЧ | рд╕рдВрдЦреНрдпрд╛ { рдЬрд░ (x === рдХреНрд░рдорд╛рдВрдХрд╛рдЪрд╛ рдкреНрд░рдХрд╛рд░) { рд░рд┐рдЯрд░реНрди x + 1 } рдмрд╛рдХреА { рд░рд┐рдЯрд░реНрди x + "!" } }

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛