рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░: 20 рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рдпрдорд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдпрд╛ Node.js. рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХреЛрдб рдХрд┐рд╕реА рднреА JS рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ ECMAScript 3 рдпрд╛ рдирдП рдорд╛рдирдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред



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

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 1 (1)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ?


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

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╡рд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

  • рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╛рдирдХреЛрдВ рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдорд╛рдирдХреЛрдВ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╕рдВрдХрд▓рд┐рдд рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЯреАрдПрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ ES2015 рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдФрд░ рдирдП рдорд╛рдирдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдореЙрдбреНрдпреВрд▓, рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдХрдХреНрд╖рд╛рдПрдВ, рдкреНрд░рд╕рд╛рд░ рдСрдкрд░реЗрдЯрд░, рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА, рдФрд░ рд╡рд╣ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд╣ рдореМрдЬреВрджрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрднреА рддрдХ рдЗрди рдорд╛рдирдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
  • рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдРрдб-рдСрди рд╣реИред рд╢реБрджреНрдз рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдХреЛрдб рдорд╛рдиреНрдп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╣реИред
  • рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЯреАрдПрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдЗрд╕рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕, рдПрдиреНрдпреВрдорд░реЗрд╢рдВрд╕, рд╣рд╛рдЗрдмреНрд░рд┐рдб рдкреНрд░рдХрд╛рд░, рдЬреЗрдиреЗрд░рд┐рдХ рдкреНрд░рдХрд╛рд░, рдпреВрдирд┐рдпрди рдкреНрд░рдХрд╛рд░ рдФрд░ рдЪреМрд░рд╛рд╣реЗ рдкреНрд░рдХрд╛рд░, рдПрдХреНрд╕реЗрд╕ рд╕рдВрд╢реЛрдзрдХ, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
  • рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ, рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдИрдбреАрдИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ, рдЯреАрдПрд╕ рд╕рдВрдХрд▓рдХ рд╕реЗ рдЯрд╛рдЗрдк рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
  • рд╕рдЦреНрдд null рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп (рдХрдВрдкрд╛рдЗрд▓рд░ рдлреНрд▓реИрдЧ --strictNullChecks рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЪрд░ рдХреЛ null рдФрд░ undefined рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдореЛрдб рдореЗрдВ, рдЗрди рдорд╛рдиреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред
  • рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЯреАрдПрд╕ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╕реНрд░реЛрдд рдореИрдк рдХреЛ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЕрд▓рдЧ .рдореИрдк рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  • рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд Microsoft рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ рдЕрдкрд╛рдЪреЗ 2 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╕рд░реНрдЬрдХ рдПрдВрдбрд░реНрд╕ рд╣реЗрд▓реНрд╕рдмрд░реНрдЧ рд╣реИред рд╡рд╣ рдЯрд░реНрдмреЛ рдкрд╛рд╕реНрдХрд▓, рдбреЗрд▓реНрдлреА рдФрд░ рд╕реА # рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 2 (1)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВред


рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдкреНрд░рдХрд╛рд░ (рдЬреЗрдирд░рд┐рдХ) рдЖрдкрдХреЛ рдРрд╕реЗ рдШрдЯрдХреЛрдВ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рдПрдХ рдХреЗ рд╕рд╛рде рдирд╣реАрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 /**       */ class Queue<t> { private data = []; push = (item: T) => this.data.push(item); pop = (): T => this.data.shift(); } const queue = new Queue<number>(); queue.push(0); queue.push("1"); //  :      ,      

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 3 (2)ред рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рднреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ?


рд╣рд╛рдБ, рдпрд╣ рдХрд░рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдЪрд╛рд░ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИрдВ:

  • рдХреИрдкреНрд╕реВрд▓реАрдХрд░рдг
  • рд╡рд┐рд░рд╛рд╕рдд
  • рдорддрд┐рд╣реАрдирддрд╛
  • рдмрд╣реБрд░реВрдкрддрд╛

рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЗрди рд╕рднреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 4 (2)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдорд╛рдирддрд╛ рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреИрд╕реЗ рдХрд░реЗрдВ?


рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪреЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

 if (value) { } 

рдпрджрд┐ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪреА рдореЗрдВ рд╕реЗ рдХреБрдЫ рдирд╣реАрдВ true рддреЛ рдХреЛрд╖реНрдардХ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ true рд╣реЛрдЧреА:

  • null
  • undefined
  • NaN
  • рдЦрд╛рд▓реА рд▓рд╛рдЗрди
  • 0
  • false

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

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 5 (2)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдерд┐рд░ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдЧреБрдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП?


рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдХреНрд▓рд╛рд╕ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рдЗрд╕ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ: A class member cannot have the 'const' keyword ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2.0 рдореЗрдВ рдПрдХ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрд╢реЛрдзрдХ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕ рдЧреБрдг рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 class MyClass {   readonly myReadonlyProperty = 1;   myMethod() {       console.log(this.myReadonlyProperty);   } } new MyClass().myReadonlyProperty = 5; // ,        

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 6 (2)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ .map рдлрд╛рдЗрд▓реЗрдВ рдХреНрдпрд╛ рд╣реИрдВ?


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

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 7 (2)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХреНрдпрд╛ рд╣реИрдВ?


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

 class foo { private _bar:boolean = false; get bar():boolean {   return this._bar; } set bar(theBar:boolean) {   this._bar = theBar; } } var myBar = myFoo.bar;  //    myFoo.bar = true;  //    

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 8 (2)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд░реНрд╡рд░ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреИрд╕реЗ?


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

 npm i -g typescript 

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

 { "compilerOptions": {   "target": "es5",   "module": "commonjs",   "declaration": true,   "outDir": "build" } } 

рдЕрдм, рдмрд╢рд░реНрддреЗ рдХрд┐ рд╕рдВрдХрд▓рдХ рдХреЗ рдкрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 tsc 

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ JS рдлрд╛рдЗрд▓ Node.js рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, build рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 node build/index.js 

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 9 (3)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдореБрдЦреНрдп рдШрдЯрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВред


рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рддреАрди рдореБрдЦреНрдп рдШрдЯрдХ рд╣реЛрддреЗ рд╣реИрдВ:

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

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 10 (3)ред рдХреНрдпрд╛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИ? рдЕрдкрдирд╛ рдЙрддреНрддрд░ рд╕реНрдкрд╖реНрдЯ рдХреАрдЬрд┐рдПред


рдпрд╣рд╛рдБ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ:

 class Point {   x: number;   y: number; } interface Point3d extends Point {   z: number; } let point3d: Point3d = {x: 1, y: 2, z: 3}; 

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

тЖТ рд╕реНрд░реЛрдд


рдмрд╕ рд╕рдЪ рдореЗрдВ рдЗрд╕ рдлрд┐рд▓реНрдо рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ)

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 11 (3)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░реЙрдкрд░реНрдЯреА рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВред


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

 class CRUD {   get() { }   post() { }   @admin   delete() { }   @owner   put() { } } 

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 12 (3)ред рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 class Foo {   save(callback: Function) : void {       //        var result : number = 42; //             //      -  ,        number?       callback(result);   } } var foo = new Foo(); var callback = (result: string) : void => {   alert(result); } foo.save(callback); 

рдХреНрдпрд╛ save рд╡рд┐рдзрд┐ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдЖрдк рдХреЙрд▓рдмреИрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 type NumberCallback = (n: number) => any; class Foo {   //    save(callback: NumberCallback): void {       console.log(1)       callback(42);   } } var numCallback: NumberCallback = (result: number) : void => {   console.log("numCallback: ", result.toString()); } var foo = new Foo(); foo.save(numCallback) 

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 13 (3)ред рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣рд░ рд╕реБрд▓рдн рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рд╡рд░реНрдЧреЛрдВ рдХреЛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП?


рдПрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрдХреНрд╖рд╛рдПрдВ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рднреАрддрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдмрд╛рд╣рд░, рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

 module Vehicle {   class Car {       constructor (           public make: string,           public model: string) { }   }   var audiCar = new Car("Audi", "Q7"); } //     var fordCar = Vehicle.Car("Ford", "Figo"); 

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

 module Vehicle {   export class Car {       constructor (           public make: string,           public model: string) { }   }   var audiCar = new Car("Audi", "Q7"); } //       var fordCar = Vehicle.Car("Ford", "Figo"); 

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 14 (3)ред рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ?


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

 class Foo {   myMethod(a: string);   myMethod(a: number);   myMethod(a: number, b: string);   myMethod(a: any, b?: string) {       alert(a.toString());   } } 

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 15 (4)ред рдЖрдкрдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?


рдпрд╣рд╛рдБ рдкреНрд░рд╢реНрди рдореЗрдВ рдХреЛрдб рд╣реИ:

 /* */ interface Fetcher {   getObject(done: (data: any, elapsedTime?: number) => void): void; } 

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

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 16 (4)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХреИрд╕реЗ рдХрд░реЗрдВ?


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

  • рдЖрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

     class Box {   public x: number;   public y: number;   public height: number;   public width: number;   constructor();   constructor(obj: IBox);   constructor(obj?: any) {          this.x = obj && obj.x || 0       this.y = obj && obj.y || 0       this.height = obj && obj.height || 0       this.width = obj && obj.width || 0;   } } 
  • рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

     class Box {   public x: number;   public y: number;   public height: number;   public width: number;   constructor(obj : IBox = {x:0,y:0, height:0, width:0}) {          this.x = obj.x;       this.y = obj.y;       this.height = obj.height;       this.width = obj.width;   } } 
  • рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдзрд┐рднрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдереИрддрд┐рдХ рдХрд╛рд░рдЦрд╛рдиреЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

     class Person {   static fromData(data: PersonData) {       let { first, last, birthday, gender = 'M' } = data       return new this(           `${last}, ${first}`,           calculateAge(birthday),           gender       )   }   constructor(       public fullName: string,       public age: number,       public gender: 'M' | 'F'   ) {} } interface PersonData {   first: string   last: string   birthday: string   gender?: 'M' | 'F' } let personA = new Person('Doe, John', 31, 'M') let personB = Person.fromData({   first: 'John',   last: 'Doe',   birthday: '10-09-1986' }) 
  • рдЖрдк рд╕рдВрдШ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

     class foo {   private _name: any;   constructor(name: string | number) {       this._name = name;   } } var f1 = new foo("bar"); var f2 = new foo(1); 

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 17 (4)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЯрд╛рдЗрдк рдХреАрд╡рд░реНрдб рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИрдВ?


рдЗрди рдЦреЛрдЬрд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

 interface X {   a: number   b: string } type X = {   a: number   b: string }; 

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

interface рдХреАрд╡рд░реНрдб рдХреЗ рдмрдЬрд╛рдп type рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдирд┐рдореНрди рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдЦреЛ рдЬрд╛рддреА рд╣реИрдВ:

  • рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ extends рдпрд╛ implements рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред
  • рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХрдИ рдорд░реНрдЬ рдХрд┐рдП рдЧрдП рдШреЛрд╖рдгрд╛рдПрдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ type рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 18 (5)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд┐рдХреНрд▓реЗрдпрд░ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдореЗрдВ рдмрддрд╛рдПрдВред


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

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

 declare var myLibrary; 

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

 var myLibrary: any; 

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

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 19 (5)ред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрд╛рд╣рд░реА рдЪрд░ рдШреЛрд╖рдгрд╛рдПрдВ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?


рдПрдХ рдЪрд░ (рдкрд░рд┐рд╡реЗрд╢ рдШреЛрд╖рдгрд╛) рдХреА рдПрдХ рдмрд╛рд╣рд░реА рдШреЛрд╖рдгрд╛ рдПрдХ рдРрд╕рд╛ рддрдВрддреНрд░ рд╣реИ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕реНрд░реЛрдд рдХреЛрдб рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рд╣рд░ рдХрд╣реАрдВ рдореМрдЬреВрдж рд╣реИред рдмрд╛рд╣рд░реА рд╡рд┐рдЬреНрдЮрд╛рдкрди рдЯреАрдПрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рддреГрддреАрдп-рдкрдХреНрд╖ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред

рдпреЗ рдШреЛрд╖рдгрд╛рдПрдБ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .d.ts рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдк рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрддреА рд╣реИрдВред рдмрд╛рд╣рд░реА рдЪрд░ рдпрд╛ рдореЙрдбреНрдпреВрд▓ рдЗрд╕ рддрд░рд╣ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ:

 declare module Module_Name { } 

рдмрд╛рд╣рд░реА рдХреЛрдб рд╡рд╛рд▓реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ TS рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 /// <reference path=" Sample.d.ts"></reference> 

тЖТ рд╕реНрд░реЛрдд

рдкреНрд░рд╢реНрди рд╕рдВрдЦреНрдпрд╛ 20 (5)ред рдХреНрдпрд╛ рдореИрдВ рдЬреЗрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд░рд┐рдПрдЯрд┐рд╡ рдХреЛ рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?


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

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

тЖТ рд╕реНрд░реЛрдд

рдкрд░рд┐рдгрд╛рдо


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

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░рдХрд░реНрддрд╛ рд╕реЗ рдЖрдк рдХреНрдпрд╛ рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВрдЧреЗ?


- рдФрд░ рдЗрд╕ рдкреНрд░реЛрдореЛ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЫреВрдЯ рд╣реИ!
- рдпрд╣ 7% рд▓рдЧрддрд╛ рд╣реИред рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдореИрдВ рдЬрд╛рдБрдЪ рдХрд░реВрдБрдЧрд╛ ...
"рд╣рд╛рдБ, рдЖрдк рдЬрд╛рдБрдЪ рдХрд░реЗрдВред" рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЫреВрдЯ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рд╣реИ!
...
- рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдЫреВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЧрд▓рдд рдерд╛ред рд╕рднреА рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд░ рдкрд░ 10%ред

Source: https://habr.com/ru/post/hi419993/


All Articles