Typescript: рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рд╕рдорд░реНрдерди

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдорд╛рд░реНрдЪ 2017  ┬╖  99рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: microsoft/TypeScript

рдЪреВрдВрдХрд┐ #13764 рдЖ рдЪреБрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдореИрдВ рдПрдкреАрдЖрдИ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдХреЗрд╡рд▓ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рдЯреАрдПрд╕рд╕реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЕрд╕рдВрдЧрддрддрд╛ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди tsc рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рдХреЗ рд╕рдорд╛рди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

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

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

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

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

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

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

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

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдФрд░ рдирдореВрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЕрджреНрдпрддрди? @mhegazy

@MichaReiser рдЖрдк рдПрдкреАрдЖрдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрдВрдкрд╛рдЗрд▓рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдирдореВрдирд╛ рдпрд╣рд╛рдВ )ред рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╛рд╣реВ рдлрд╛рдЗрдиреЗрдВрд╕ рдХреЗ рднреАрддрд░ рдЯреАрдПрд╕ рдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдкрдмреНрд▓рд┐рдХ рдПрдкреАрдЖрдИ рдХрдорд╛рд▓ рдХрд╛ рд░рд╣рд╛ рд╣реИред

рд╡реЗ рдХреБрдЫ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд▓рд┐рдЦрд╛ рдерд╛:
https://github.com/longlho/ts-transform-system-import
https://github.com/longlho/ts-transform-img
https://github.com/longlho/ts-transform-react-intl
https://github.com/longlho/ts-transform-css-modules-transform

@mhegazy lmk рдЕрдЧрд░ рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг/рдирдореВрдиреЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ

@longlho
рдЖрдкрдХреЗ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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

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

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

@MichaReiser рд╣рд╛рдБред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

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

рд╣рд╛рдп рд╕рдм, рдореИрдВ рдПрдХ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рдирд┐рдХрд▓рддрд╛ рд╣реИ :[

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрд░реЗ рджреЛ рдкреНрд░рд╢реНрди рд╣реИрдВ:

  • рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдПрдПрд╕рдЯреА-рдЯреБрдХрдбрд╝рд╛ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ?
  • рдЖрдпрд╛рдд рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ?
// 1. Input
class Foo {
    templateString = 'some value';
}

// 2. After transformation
import __LIB__ from '@external/lib';

class Foo {
    templateString = (function compiledTemplate(deps) {
        // ...
        return result;
    })({lib: __LIB__});
}

// 3. Expected result
var lib_1 = require("@external/lib");
var Foo = (function () {
    function Foo() {
        this.templateString = (function compiledTemplate(deps) {
            // ...
            return result;
        })({ lib: lib_1 }); 
    }
    return Foo;
}());

рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдЙрджрд╛рд╣рд░рдг: https://github.com/RubaXa/typescript-api-questions/tree/master/import-add

я╕П я╕П я╕П
@longlho , @mhegazy рдХреНрдпрд╛ рдЖрдк рдХреЛрдИ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?

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

рдПрдХ рд╡рд┐рдХрд▓реНрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдпрд╛рдд рдХреЗ рдмрдЬрд╛рдп рдиреЗрдорд╕реНрдкреЗрд╕ рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдкрдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ:

import * as __LIB__ from "@external/lib"

рдЪреВрдВрдХрд┐ рдХреЛрдИ рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдВрд▓рдЧреНрди рдЬрд╝рд┐рдк рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдпрд╛рдд рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкрд░ рджреВрд╕рд░рд╛ рдкрдХрдбрд╝

@RubaXa рдпрджрд┐ рдЖрдкрдХрд╛ рд▓рдХреНрд╖реНрдп рдкреВрд░реЗ рдореЙрдбреНрдпреВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЖрдк рд╢рд╛рдпрдж import * as __LIB__ from "@external/lib" рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЬрд┐рд╕реЗ рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) рдФрд░ import __LIB__ from "@external/lib" рдирд╣реАрдВ рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдж рд╡рд╛рд▓рд╛ default рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдкреВрд░реЗ рдореЙрдбреНрдпреВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрдЬрд╛рдп

рд╣рд╛рдБ, рд╣рдо рдЕрдкрдиреЗ CSS рдореЙрдбреНрдпреВрд▓ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдореЗрдВ import * as foo рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕рд╛рде рд╣реА рдЕрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рддреЛрдВ рдХреЛ рдЗрдирд▓рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдореЗрдВ рдЯреИрдк рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛

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

function createFragmentFromString(code: string) {
  // ????
}

function visitPropertyDeclaration(node) {
    if (ts.isIdentifier(node.name) && node.name.text === "templateString") {
        // ...
        return ts.updateProperty(
            node,
            ts.visitNodes(node.decorators, visitor),
            ts.visitNodes(node.modifiers, visitor),
            ts.visitNode(node.name, visitor),
            ts.visitNode(node.type, visitor),
            createFragmentFromString('(function compiledTemplate() { /* ... */ })()')
        );
    }
    return node;
}

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рд╕рдкреЛрд░реНрдЯ рдФрд░ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред

https://www.dartlang.org/tools/pub/transformers

рдореБрдЭреЗ рднреА рдЗрд╕ рдлреАрдЪрд░ рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ @MichaReiser рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ
If someone experienced has inputs on how to implement the changes, I'm willing to create a PR as it would simplify my project tremendously.

рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ/рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ DEV рд╕реЗ рдЗрдирдкреБрдЯ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реНрджрд╛рдлрд╛рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рдкреЗрдЯ рд▓реА рд╣реИред https://github.com/cevek/ttypescript

рдРрд╕рд╛ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ts-loader рдореЗрдВ рдпрд╣ рд╣реИ: https://www.npmjs.com/package/ts-loader#getcustomtransformers -----before-transformerfactory--after-transformerfactory----

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2.8 рд░рд┐рд▓реАрдЬ рдореЗрдВ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд░реЛрдбрдореИрдк рдореЗрдВ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдЙрддрд░ рд╕рдХрддрд╛ рд╣реИ, @ahejlsberg @mhegazy @DanielRosenwasser рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ? рдЗрд╕ рддрд░рд╣ рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред Tsconfig.json рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдлреНрд░реЛрдорд░ рдореЗрдВ рдкреНрд▓рдЧ рдЗрди рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдиреЗ рд╕реЗ рдЬреАрд╡рди рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдорд╛рд░реА рдЕрд▓реНрдкрд╛рд╡рдзрд┐ рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред

@mhegazy рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдЪрд╛рд░рд┐рдд рдирд┐рд░реНрдгрдп рд╣реИ рдпрд╛ рдХрдо рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╣рд┐рдд рдХреЗ рдХрд╛рд░рдг рдпрд╣ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ?

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

рдХреГрдкрдпрд╛, рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдкреНрд▓рдЧрдЗрди рдПрдкреАрдЖрдИ рд╡рд┐рдЦрдВрдбрди рдмрдВрдж рдХрд░реЛред рдЯреНрд░рд╛рдВрд╕рдлреЛрдорд░ рдПрдкреАрдЖрдИ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкреНрд▓рдЧрдЗрди рдПрдкреАрдЖрдИ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ tsconfig.json рдореЗрдВ рдмреЗрдирдХрд╛рдм рдХрд░реЗрдВред

рдЯреАрдПрд╕-рд▓реЛрдбрд░ , рдкрд╛рд░реНрд╕рд▓-рдкреНрд▓рдЧрдЗрди-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ , рд░реЛрд▓рдЕрдк-рдкреНрд▓рдЧрдЗрди-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2, рдЯреАрдПрд╕-рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░-рдХреА , рдЯреАрдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЕрдиреНрдпред

рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╕реНрдЯрдо рдкреНрд▓рдЧрдЗрди рдкрдВрдЬреАрдХрд░рдг рд╡рд┐рдзрд┐ рдФрд░ рдХрд╕реНрдЯрдо рдкреНрд▓рдЧрдЗрди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдкреНрд░рд╛рд░реВрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ ts рдкреНрд▓рдЧрдЗрди рдирд░рдХ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

рдЕрдм cevec/ttypescript рд╕рднреА рд╕рд╛рдорд╛рдиреНрдп рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдкреНрд▓рдЧрдЗрди рд╕реНрд╡рд░реВрдкреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рднреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рдФрд░ tsc, tsserver рдХрдорд╛рдВрдб (рдмрд╕ рдЫреЛрдЯрд╛ рд░рдирдЯрд╛рдЗрдо ts.createProgram рдкреИрдЪ) рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдбреНрд░реЙрдк-рдЗрди рд░реИрдкрд░ рд╣реИред рд╡реЗрдмрдкреИрдХ ts-loader рдФрд░ рд░реЛрд▓рдЕрдк-рдкреНрд▓рдЧрдЗрди-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ2 рдХреЛ ttypescript рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд┐рдиреНрдпрд╕реНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЯреАрдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдкреНрд▓рдЧрдЗрди рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред

{
    "compilerOptions": {
        "plugins": [
            { "transform": "ts-transform-graphql-tag" },
            { "transform": "ts-transform-css-modules", "type": "config" },
            { "transform": "ts-nameof", "type": "raw", "after": true}
            { "transform": "./transformers/my-transformer.ts", "someOption1": 123, "someOption2": 321  }
        ]
    },
    "exclude": ["node_modules", "transformers/**/*"]
}

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

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

рд╡реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдВрддрд░рд┐рдХ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рд╣реЛрдиреЗ рдХреЗ рдбрд░ рд╕реЗ рдПрдХ рдФрд░ рдПрдкреАрдЖрдИ/рд╕рддрд╣ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рдПред

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

Microsoft рдХреЗ рдкрд╛рд╕ рдХреЛрдб рдХреЗ рдЕрд░реНрде рдореЗрдВ рдУрдкрди-рд╕реЛрд░реНрд╕ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрд░реНрде рдореЗрдВ рдирд╣реАрдВред

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

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

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

рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ #16607 рдЬреИрд╕рд╛ рд╣реА рд╣реИ, рдпрд╛ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛? рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдкреНрд▓рдЧрдЗрди-рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЗрд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рднреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдЬрд┐рд╕рдореЗрдВ рдмреИрдмреЗрд▓ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред

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

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

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

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

@FredyC рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ tsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдВрдХрд▓рдХ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреЗрдмреЗрд▓-рдкреНрд▓рдЧрдЗрди-рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдЕрднреА рднреА .babelrc рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ tsconfig.json рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

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

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

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЫреЛрдЯрд╛ рдЖрд╡рд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд https://github.com/cevek/ttypescript рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдореИрдХреНрд░реЛрдЬрд╝ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рдПрдХ рдЬреАрдд рд╣реИред

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

рд╡реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдВрддрд░рд┐рдХ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ рд╣реЛрдиреЗ рдХреЗ рдбрд░ рд╕реЗ рдПрдХ рдФрд░ рдПрдкреАрдЖрдИ/рд╕рддрд╣ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рдПред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ 3 рд╕рд╛рд▓ рдмрд╛рдж, рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрдпрд╛ рд╣реВрдВред Microsoft рдХреЗ рдкрд╛рд╕ _code_ рдХреЗ рдЕрд░реНрде рдореЗрдВ рдУрдкрди-рд╕реЛрд░реНрд╕ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди _process_ рдХреЗ рдЕрд░реНрде рдореЗрдВ рдирд╣реАрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрдореЛрдмреЗрд╢ _рдирд┐рд░реНрдгрдп_ рдФрд░ _рдХреЛрдбрд┐рдВрдЧ_ рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдореБрджрд╛рдп-рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдХрд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдЖрдкрдХреЛ node.js рдХрд╛ IO.js рдХрд╛рдВрдЯрд╛ рдпрд╛рдж рд╣реИ? рд╕рдореБрджрд╛рдп рдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдХрдВрдкрдиреА рдХреЗ рд╣рд┐рдд рд╕рд╛рдорд╛рдиреНрдп рдУрдкрди рд╕реЛрд░реНрд╕ рдЧрд╡рд░реНрдиреЗрдВрд╕ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдЗрддрдиреЗ рд╕рдВрд░реЗрдЦрд┐рдд рдирд╣реАрдВ рдереЗ, рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрд╕ рдлреЛрд░реНрдХ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди Microsoft рдХреЛ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рджреЗрд╡реЛрдВ рдХреЛ рджреЛрд╖ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ, рд╡реИрд╕реЗ рднреА, рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдмрд╕ рдореЗрд░рд╛ 2c, OT рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред

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

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

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

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

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

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

... рдЕрдм рднреА рдЗрдВрддрдЬрд╝рд╛рд░ :(

рд╣рд╛рдБ, рдЕрднреА рднреА рдЗрдВрддрдЬрд╝рд╛рд░ рд╣реИ..., рд▓реЗрдХрд┐рди рдХрд┐рд╕ рдмрд╛рдд рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ рд╣реИ, рдХреНрдпрд╛ рдХреБрдЫ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдХреНрдпрд╛ рдЕрдм ttypescript рд╕реЗ рдХреЛрдИ рдмреЗрд╣рддрд░ рдЙрдкрд╛рдп рд╣реИ?
рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░ рдЕрдВрддрддрдГ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?

рдЖрдк рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ ;-)

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

2 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдП рд╣реИрдВ (рд╡рд╛рд╣!)*ред рдХреНрдпрд╛ рд▓реЛрдЧ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЦреЛрд▓рдиреЗ рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд╣реИрдВ?

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

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

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

* рдФрд░ рдЗрд╕ рдмреАрдЪ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ TS рдХреЗ рдмрдЬрд╛рдп ( ttypescript ) рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИред

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

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

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

рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреАрдо рдХреА рд╕рд░рд╛рд╕рд░ рд▓рд╛рдкрд░рд╡рд╛рд╣реА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣рд╛рдБ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ

рд╣рдо tslint рдФрд░ рдЗрд╕рдХреА рдХреЛрдб рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо рдЯрд╛рдЗрдк-рдЯреВ-рдХреЛрдб рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд░реВрдк рдореЗрдВ

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

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдХреЛрд░реЗрдЯрд░ рдПрдХ рдирдХрд▓реА рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд▓рдХреНрд╖реНрдп рд╣реИ

  • рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
  • рдФрд░ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдирд╛ рдХрд╛ рд╕реНрд░реЛрдд рдмрдирдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ

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

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

  1. рдЕрдкрдирд╛ рд╡реАрдПрд╕рд╕реАрдУрдбреА рд╢реБрд░реВ рдХрд░реЗрдВ
  2. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ: https://github.com/Microsoft/vscode-typescript-tslint-plugin
  3. рдЕрдкрдирд╛ рд╡реАрдПрд╕рд╕реАрдУрдбреА рдмрдВрдж рдХрд░реЗрдВ
  4. рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ
  5. git clone https://github.com/zpdDG4gta8XKpMCd/code-gen.git . рдЪрд▓рд╛рдПрдВ
  6. рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ code-gen : cd ./code-gen
  7. рджреМрдбрд╝рдирд╛

    • 1-install.bat

    • 2-build.bat

    • 3-install-some-more.bat

    • 4-try.bat

  8. рдЦреЛрд▓реЗ рдЧрдП VSCode рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ
  9. test.ts ( Ctrl + P -> test.ts ) рдкрд░ рдЬрд╛рдПрдВ
  10. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХрд╛ рд╕реНрд░реЛрдд рд╣реЛрдЧрд╛
interface Data {
    one: string;
    another: number;
}
  1. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреНрд░реЗрдд рдбреЗрдХреЛрд░реЗрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдорд╛рд░реНрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ
function gen<_T>() {
    return function (meh: any) {};
}
  1. рдкреБрдирд░реНрд▓реЗрдЦрди рдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдорд╛рд░реНрдХрд░ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
@gen<Data>()
export class Gen {
}
  1. @gen<Data>() рдХреЗ рддрд╣рдд рдПрдХ рдШреБрдорд╛рд╡рджрд╛рд░ рд░реЗрдЦрд╛ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ
    image

  2. Quick fix... рдЪреБрдиреЗрдВ -> Needs a rewrite, wanna fix?
    image

  3. рд╕реНрд╡рдд: рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ:
    image


рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк codeGenRule.ts . рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ

import * as Lint from 'tslint';
import * as ts from 'typescript';

export class Rule extends Lint.Rules.TypedRule {
    public applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): Lint.RuleFailure[] {
        return this.applyWithWalker(new Walker(sourceFile, this.getOptions(), program.getTypeChecker()));
    }
}

class Walker extends Lint.RuleWalker {
    constructor(sourceFile: ts.SourceFile, options: Lint.IOptions, private checker: ts.TypeChecker) {
        super(sourceFile, options);
    }
    public visitNode(node: ts.Node) {
        if (ts.isDecorator(node)) {
            const checked = check(node, this.checker);
            if (checked !== undefined) {
                const [node, message, replacement] = checked;
                this.addFailureAtNode(node, message, replacement);
            }
        }
        super.visitNode(node);
    }
}

function check(node: ts.Decorator, checker: ts.TypeChecker) {
    const { expression, parent } = node;
    if (!ts.isClassDeclaration(parent)) return;
    if (!ts.isCallExpression(expression)) return;
    const { expression: identifier, typeArguments: typeArgs } = expression;
    if (!ts.isIdentifier(identifier)) return;
    const { text: name } = identifier;
    if (name !== 'gen') return;
    if (typeArgs === undefined) return;
    if (typeArgs.length > 1) return;
    if (typeArgs.length < 1) return;
    const [only] = typeArgs;
    const type = checker.getTypeFromTypeNode(only);

    // if you got to here, you are at the right place and you have a type

    // working on a fix
    const properties = checker.getPropertiesOfType(type);
    const allNameTypes = properties.map(p => {
        const { name } = p
        const type = checker.getTypeOfSymbolAtLocation(p, node);
        return name + ': \'' + checker.typeToString(type) + '\';'
    })
    const { newLine } = ts.sys;
    const body = newLine + allNameTypes.join(newLine);
    const { pos: start, end } = parent.members;
    return [
        node,
        'Needs a rewrite, wanna fix?',
        Lint.Replacement.replaceFromTo(start, end, body)
    ] as const;
}

@zpdDG4gta8XKpMCd , рдЕрдкрдиреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж - рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рд╕рднреНрдп рдмрдиреЗрдВред

рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреАрдо рдХреА рд╕рд░рд╛рд╕рд░ рд▓рд╛рдкрд░рд╡рд╛рд╣реА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣рд╛рдБ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ

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

рдУрд╣, рдХреГрдкрдпрд╛ рдЗрд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рди рд▓реЗрдВ, рдпрд╣реА рд╡рд╣ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореИрдВ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреА рд╢рд┐рдХрд╛рдпрддреЗрдВ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рдореЗрд░рд╛ рд╡реНрдпрдХреНрддрд┐рддреНрд╡ рдмрд╣реБрдд рдЦрдЯреНрдЯрд╛ рд╣реИ (рдЪрд┐рдХрд┐рддреНрд╕реАрдп рд╕реНрдерд┐рддрд┐) рдФрд░ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЦреБрдж рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдмрд╣реБрдд рдЦреЗрдж рд╣реИ

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

  • рдЖрдк рдЬреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬреЛ рдЖрдЬ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЖрд░рд╛рдо рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд▓рдЧрддрд╛ рд╣реИ (рдХреЛрдИ рдЪрд╛рд▓ рдирд╣реАрдВ, рдХреЛрдИ рд╣реИрдХрд┐рдВрдЧ рдирд╣реАрдВ)
  • рдпрд╣ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреАрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╛рдЧреГрдд рдХреЙрд▓ рд╣реИ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рдерд╛ рдЬрдм рд╕рдореБрджрд╛рдп рдЧрд▓рдд рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдореЛрдбрд╝ рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдерд╛, рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреАрдо рддреБрд░рдВрдд рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рдереА: #4212,
  • рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╡реЗ рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдЗрд╕реЗ рдмрд╣реБрдд рдЬрд▓реНрджреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдмрд╣реБрдд рджреЗрд░ рди рд╣реЛ рдЬрд╛рдП, рдпрд╛ рдпрджрд┐ рд╡реЗ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ рдФрд░ рдпрд╣ рдЙрдирдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
  • рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд▓рд╣рдЬрд╛ рдХреБрдЫ рдЕрдиреБрдЪрд┐рдд рдерд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рд╕рднреА рдЙрдкрдпреБрдХреНрдд рд╕реНрд╡рд░ рдиреЗ рдЖрдкрдХреЛ 2 рдорд╛рд░реНрдЪ, 2017 (2 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ) рдХреЗ рдмрд╛рдж рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╣рд╛рдБ, рдЖрдк рдПрдХ рдФрд░ 2 рд╕рд╛рд▓ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

@zpdDG4gta8XKpMCd рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЖрдкрдиреЗ рдХреНрдпрд╛ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ рд╣реИ? рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реИ; рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдиреЗ рдПрдХ (рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рднреА) рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдпрд╛ рд╣реИ рддреЛ рд╡реЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

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

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

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

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

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

  1. рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╢реНрд░реЗрдгреА рд╣реИ рдЬрд┐рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдЬреЛ рдХрд┐ рдорд╛рдореВрд▓реА рдФрд░ рдХрдо рд░реБрдЪрд┐ рд╡рд╛рд▓реА рд╣реИрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдХреБрдЫ рднреА рдЧрдВрднреАрд░ - рдФрд░ рдЖрдк рдирд╣реАрдВ рд╣реИрдВ

  2. рдЪреВрдБрдХрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдк рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕рдорд╕реНрдпрд╛ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 224 рдЕрдВрдЧреВрдареЗ рдКрдкрд░ рд╣реЛрдиреЗ рдкрд░ рднреА) рд╡рд░реНрд╖реЛрдВ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рдХрднреА рднреА рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП

  3. рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдЖрдЬ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреЛ рднреА рд╕рд╛рдзрди рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдлрд░реНрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ (рдореБрдЭреЗ рдХреБрдЫ рднреА рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрд╖ рди рджреЗрдВ)

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


@Janpot рд╣рд╛рдБ, рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ WIP рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЬрдм @rbuckton рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╕реНрдерд┐рддрд┐ рдкрд░ рдХреБрдЫ рдФрд░ рд╡рд┐рд╡рд░рдг рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

@DanielRosenwasser рдЗрд╕рдореЗрдВ рдЗрддрдирд╛ рдирд┐рдВрджрдХ рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ 2 рд╢рдмреНрдж рдХрд╣реЗ рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧрд╣рд░рд╛ рдЦреЗрдж рд╣реИ

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

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

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

  • рд╣рдо рдП, рдмреАрд╕реА рдХреА рд╡рдЬрд╣ рд╕реЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рдбреА, рдИ рдФрд░ рдПрдл рдХреА рдЬрд░реВрд░рдд рд╣реИ

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдмрд╛рддрдЪреАрдд рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: https://github.com/Microsoft/TypeScript/issues/30696#issuecomment -478799258

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

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

@zpdDG4gta8XKpMCd рдЖрдкрдХреЛ рдХрд┐рд╕реА рдХреЛ рджреЛрд╖ рдХреНрдпреЛрдВ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП? рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдЦреБрдж рдХреЛ рджреЛрд╖ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреЗрддреЗ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рд╣реИ? рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд░рдЪрдирд╛рддреНрдордХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХреИрд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдП?

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

рднрдЧрд╡рд╛рди рдХреЗ рд▓рд┐рдП @FredyC , рдпрд╣ рдХрд╣рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореЗрд░реЗ рдХрд╛рдордХрд╛рдЬ рдХреЛ рджреЗрдЦреЗрдВ

рд╣рд╛рдБ, рдореИрдВ рдФрдкрдЪрд╛рд░рд┐рдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдХреНрдпреЛрдВрдХрд┐:

  1. рдореИрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд╕реНрддрд░ рддрдХ рдирд╣реАрдВ рд╣реВрдВ

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

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

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

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

  • рднрд╛рд╖рд╛ рдХрд╛ рднрд╡реНрдп рдбрд┐рдЬрд╛рдЗрди
  • MS . рдХреЗ рдЕрдВрджрд░ рдмрдЬрдЯ / рд╕рдВрд╕рд╛рдзрди / рд░рд╛рдЬрдиреАрддрд┐
  • рд╕рдорд╛рдЬ рдХреА рдХрд╛рдордирд╛

рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдЗрди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рдорд┐рд╢реНрд░рдг рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рдерд╛

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

https://github.com/Microsoft/TypeScript/issues/14419#issuecomment -483920640 рдХреА рдирд┐рд░рдВрддрд░рддрд╛

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

рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдирд╛ рд╕реНрд░реЛрдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд░ рд╣реИ

рдЗрд╕ рддрд░рд╣ рд╕реЗ рдпреЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:

  1. toRandom... рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд╣рдд рд╕реНрдХреНрд╡рд┐рдЧрд▓реА рд▓рд╛рдЗрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ
    image
  2. рдЕрдкрдиреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВ:
    image
  3. рдЬрд▓реНрджреА рдареАрдХ рдХрд░реЛ
    image
  4. рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ:
    image

рдпрд╣рд╛рдБ codeGenRule.ts рдХрд╛ рдХреЛрдб рд╣реИ рдЬреЛ рдпрд╣ рдХрд░рддрд╛ рд╣реИ

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

import * as Lint from 'tslint';
import * as ts from 'typescript';

export class Rule extends Lint.Rules.TypedRule {
    public applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): Lint.RuleFailure[] {
        return this.applyWithWalker(new Walker(sourceFile, this.getOptions(), program.getTypeChecker()));
    }
}

class Walker extends Lint.RuleWalker {
    constructor(sourceFile: ts.SourceFile, options: Lint.IOptions, private checker: ts.TypeChecker) {
        super(sourceFile, options);
    }
    public visitFunctionDeclaration(node: ts.FunctionDeclaration) {
        const checked = check(node, this.checker);
        if (checked !== undefined) {
            const [node, message, fix] = checked;
            this.addFailureAtNode(node, message, fix);
        }
        super.visitFunctionDeclaration(node);
    }
}

function check(node: ts.FunctionDeclaration, checker: ts.TypeChecker) {
    const { name: identifier, type: result, body } = node;
    if (body === undefined) return;
    if (identifier === undefined) return;
    const { text: name } = identifier;
    if (!name.startsWith('toRandom')) return;
    if (result === undefined) return;
    const type = checker.getTypeFromTypeNode(result);

    // if you got to here, you are at the right place and you have a type

    // working on a fix
    const properties = checker.getPropertiesOfType(type);
    const newerBody =
        `{
    return {${properties.map(prop => {
            const { name } = prop;
            const type = checker.getTypeOfSymbolAtLocation(prop, node);
            const typeName = capitalize(checker.typeToString(type));
            return `
        ${name}: toRandom${typeName}(),`;
        }).join('')}
    };
}`;
    const olderBody = body.getFullText();
    if (areEqual(olderBody, newerBody)) return;
    const start = body.getFullStart();
    const end = start + body.getFullWidth();
    return [
        node,
        'Needs a rewrite, wanna fix?',
        Lint.Replacement.replaceFromTo(start, end, newerBody),
    ] as const;
}

function areEqual(one: string, another: string) {
    // AB: we cannot make any assumption what line endings are,
    // this is why we compare the text of code without them
    return one.replace(/\r\n|\n/g, ' ') === another.replace(/\r\n|\n/g, ' ');
}

export function capitalize(value: string): string {
    const length = value.length;
    if (length > 1) {
        return value.substr(0, 1).toUpperCase() + value.substr(1);
    } else if (length > 0) {
        return value.substr(0, 1).toUpperCase();
    } else {
        return value;
    }
}

@ zpdDG4gta8XKpMCd рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддреЗ рд╕рдордп рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдореЗрдВ рдкреНрд▓рдЧрд┐рдВрдЧ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдерд╛? рднреВрддрдкреВрд░реНрд╡ред tsconfig.json рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп tsc рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдХреНрдпрд╛ рдЖрдк рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХрд╕реНрдЯрдо рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди/рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдореИрдВрдиреЗ рдЙрдирдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдкрд░ getCodeFixesAtPosition рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рдФрд░ рдЕрдкрдиреА рдХреЛрдб рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдВ рдбрд╛рд▓рдиреЗ рд╕реЗ ... рд╣рд╛рд▓рд╛рдВрдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ) https://github.com/Microsoft/TypeScript/wiki/Writing-a-Language-Service-Plugin

рдпрд╛ рд╢рд╛рдпрдж рдореИрдВ рдЧрд▓рдд рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдБ?

рд╕рд╣реАред рдареАрдХ рдпрд╣реА рдореИрдВ рд╕реЛрдЪрддрд╛ рдерд╛

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ tsconfig.json рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрд░реЗ рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдПрдХ рд╕рдкрдирд╛ рд╕рдЪ рд╣реЛрдЧрд╛

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

рдпрд╣рд╛рдБ рдореЗрд░реА рд╕реЛрдЪ рдХреА рд░реЗрдЦрд╛ рд╣реИ:

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

    • рдкреНрд▓рдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп

    • рд╕рднреА рдЖрд╡рд╢реНрдпрдХ UI . рдХреЗ рд╕рд╛рде

    • рдореБрдЭреЗ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рджреЗрддрд╛ рд╣реИ

    • рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ

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

  • рдореЗрд░рд╛ рд▓реИрдкрдЯреЙрдк рдХреЗрд╡рд▓ рдЙрддрдиреА рд╣реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдзрд╛рд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВ:

    • рдмрдирд╛рдордХреЛрдб рдореЗрдВ рд╕реЗ рдПрдХ

    • tslint . рдореЗрдВ рд╕реЗ рдПрдХ

рдФрд░ рдореИрдВ рдЙрд╕рдХреЗ рдКрдкрд░ рдПрдХ рдФрд░ рдЬреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛

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


рдФрд░ рдЗрд╕ рддрд░рд╣ рд╣рдо рдореИрдХреНрд░реЛрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ: #4892

  • рдореЗрд░рд╛ рд▓реИрдкрдЯреЙрдк рдХреЗрд╡рд▓ рдЙрддрдиреА рд╣реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдзрд╛рд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВ:

    • рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ vscode
    • рдПрдХ рджреНрд╡рд╛рд░рд╛ tslint

@zpdDG4gta8XKpMCd рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рд╣реА рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рд╣реЛрдЧреА рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЗ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде tslint рдкреНрд▓рдЧрдЗрди рдкреНрд░реЙрдХреНрд╕реА рдХрд░реЗрдЧрд╛ред

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

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

рдмрд╣реБрдореВрд▓реНрдп рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛

tsc рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд рд░рдЦрдиреЗ рдкрд░ рдореИрдВ рдЖрдкрд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐

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

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

рдпрджрд┐ рдЖрдк рдЬреЛрд░ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдХрд╣реАрдВ рдФрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдХреГрдкрдпрд╛ рдмреЛрд▓реЗрдВ

рд▓реЗрдХрд┐рди a рдХрд░рдиреЗ рдХреА рдЖрдкрдХреА рдЪрд┐рдВрддрд╛ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдПрдХ рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдирд╛

tslint рдЕрдкрдиреЗ --fix рддрд░реНрдХ рдХреЗ рд╕рд╛рде cli . рдХреЗ рд▓рд┐рдП рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реИ

@zpdDG4gta8XKpMCd --fix рдЬрдЧрд╣ рдкрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХреЗ рджреМрд░рд╛рди рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ)ред рд╕рдВрджрд░реНрднрд┐рдд рдореБрджреНрджреЗ рдХрд╛ рдкреАрдЖрд░ (#13940) рджреЗрдЦреЗрдВ:

рдЪреВрдВрдХрд┐ #13764 рдЖ рдЪреБрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдореИрдВ рдПрдкреАрдЖрдИ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдХреЗрд╡рд▓ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рдЯреАрдПрд╕рд╕реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЕрд╕рдВрдЧрддрддрд╛ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди tsc рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рдХреЗ рд╕рдорд╛рди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

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

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

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

рддреБрдо рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛ

рдореИрдВ рдПрдХ рдРрд╕рд╛ рд╡реНрдпрдХреНрддрд┐ рд╣реВрдВ рдЬреЛ рд╕рд╛рдзрд╛рд░рдг рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реИ

рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдХреБрдЫ 3500+ рдлрд╛рдЗрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдирд┐рдкрдЯ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ 15% рдХреЛ рд╣рд╛рдереЛрдВ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдКрдкрд░ рд▓рдЧрднрдЧ 5% рд╕рдорд╛рди рд╕рд╛рдорд╛рди рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ

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

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

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

рдареАрдХ рд╣реИ, рдмрдХрд╛рдпрд╛!

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

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

рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдврд╛рдВрдЪрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ ttypescript рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЯрд╛рдЗрдк-рд▓реЗрд╡рд▓ рдЬрд╛рдирдХрд╛рд░реА рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХреЗрдВ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ plugins рд╡рд┐рдХрд▓реНрдк рдЕрдВрддрддрдГ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛

рдореИрдВ рдЕрднреА рдЫреБрдЯреНрдЯреА рдкрд░ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдЬрдм рдореИрдВ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛ рддреЛ рджреЗрдЦреВрдВрдЧрд╛

рд░рд╡рд┐рд╡рд╛рд░, 21 рдЬреБрд▓рд╛рдИ, 2019 рдХреЛ рд╢рд╛рдо 5:54 рдмрдЬреЗ рдЬрд┐рдпреЛрд░реНрдЬрд┐рдпреЛ рдмреЛрдЖ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

@longlho https://github.com/longlho рдЖрдкрдиреЗ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рдПрд╕реНрдЯ рдмрдирд╛рдпрд╛ рд╣реИ
рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░, рдореБрдЭреЗ рдЖрдкрдХреА рдорджрдж рдЪрд╛рд╣рд┐рдП рдХреГрдкрдпрд╛
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдгреАрдп рд╕рдВрдХрд▓рди рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдХреЛрд░реЗрдЯрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рдЗрд╕ рдиреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реИ
рдШрдЯрдХ ({рдЪрдпрдирдХрд░реНрддрд╛: 'рдорд╛рдирдХ' ...}) рдШрдЯрдХ рдореЗрдВ ({рдЪрдпрдирдХрд░реНрддрд╛: 'рдХрд╕реНрдЯрдо'
...})
рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреАрдердм рд░реЗрдкреЛ рдмрдирд╛рдпрд╛ рд╣реИ
https://github.com/gioboa/ng-ts-transformer ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рд▓реЗрдХрд┐рди
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рдореБрдЭреЗ рдХреБрдЫ рдорджрдж рдЪрд╛рд╣рд┐рдПред ЁЯЩП рдзрдиреНрдпрд╡рд╛рджред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/microsoft/TypeScript/issues/14419?email_source=notifications&email_token=AABQM335QEEDNVT4NUICJQDQASBDXA5CNFSM4DCFER5KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW86DN#ZGODWSHJ657DN#
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AABQM33S5IYXB5HOZTRVVX3QASBDXANCNFSM4DCFER5A
.

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

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

рдлреНрд░рдВрдЯрдПрдВрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдпреЛрдЧрджрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдЧреЗ рдХреЗ рдЗрдиреЛрд╡реЗрд╢рди рдкрд░ рднреА рдмреНрд░реЗрдХ рд▓рдЧрд╛рддрд╛ рд╣реИтАж
рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рдордд рддреЛрдбрд╝реЛред рдХреЛрдИ рдкреНрд▓рдЧрдЗрди рдПрдЯреАрдПрдо рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝ рд╕рдХрддрд╛; рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ :man_shrugging: рдХреНрдпреЛрдВ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ, рд▓реЗрдХрд┐рдиред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ (рдХреБрдВрдЬреА) рд╢рдмреНрдж рдЯреЛрдХрдирдирд╛рдЗрдЬреЗрд╢рди рдФрд░ рдПрдПрд╕рдЯреА рдЗрдВрд╕реНрдЯреЗрд╢рди) рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ..., рдЕрдВрджрд░ рдХреБрдЫ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдард┐рди рддрд░реАрдХрд╛ред
рдпрд╣ рдЗрддрдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмреЗрдмреЗрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреИрдмреЗрд▓ рдХреЗ рд▓рд┐рдП рдирдП рд╢рдмреНрджрд╛рд░реНрде рдпрд╛ рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рддреБрдЪреНрдЫ рд╣реИред

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

рдЕрдЧрд░ рдЖрдк рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рдЕрдЬреАрдм рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВред tsx рдФрд░ рд╕рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдЪреНрдЫрд╛рдИ рдХреНрдпрд╛ рд╣реИ?

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

рдХреГрдкрдпрд╛ред рдореИрдВ рдпрд╣ рд╕рдм рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦ-рдкрдврд╝рдХрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдБ; рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо IE5.5+ рд╕реЗ рд╕реАрдЦрддреЗ рд╣реИрдВ; рдЕрд╡рд░реБрджреНрдз рдХрд░рдирд╛ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЕрдЧрд░ рдХреБрдЫ рд╕реБрдзрд╛рд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рддреЛ рдпрд╣ рдЕрднреА рднреА рд▓реЗрдЖрдЙрдЯ рдЗрдВрдЬрди рд╣реИред рдбреА. рдиреБрде рдЧреБрдиреА рдереЗ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ 50 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╕рднреА рд▓рд╛рдкрддрд╛ рднрд╛рдЧреЛрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдерд╛ред рдЖрдЬ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ ?? :-)
рдХреГрдкрдпрд╛, рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЗрдПрд╕ рдмреБрд░рд╛рдИ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВред

рдХреГрдкрдпрд╛ред рд╢рдмреНрджрд╛рд░реНрде рдмреБрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ TS ; рд╕реНрдерд┐рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд░рд╣, рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рд╕рдВрдХреЗрдд рдкреНрд░рджрд╛рди рдХрд░рдирд╛; рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрдиреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ ...
рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг:

  • рдЧреНрд░рд╛рдлрдХреЙрд▓ рдХреЙрд▓ рд░рд┐рдЯрд░реНрди рд╢реЗрдк
  • рдЗрдВрдЯреЗрд▓ рдЗрдирдкреБрдЯ рдЖрдХрд╛рд░
  • тАжрдмрд╣реБрдд рдЕрдзрд┐рдХ_
    рдХреГрдкрдпрд╛ред рдХреЛрдИ рд╢рдмреНрджрд╛рд░реНрде рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдм рдХреБрдЫ рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ рдХреБрдЫ рдФрд░ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╕ рдЖрдЬ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рд╣реА! :рдЦрд░рдЧреЛрд╢:

рдЯрдХреНрдХрд░

рдореИрдВ @babel/preset-env рдФрд░ @babel/runtime рдЬреИрд╕реЗ рд▓рдХреНрд╖реНрдп рдкрд░рд┐рд╡реЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди core-js рдЖрдпрд╛рдд - рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреЙрд▓реАрдлрд╝рд┐рд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП TS рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ babel рдХреЗред рдпрд╣ рдЯреАрдПрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреА рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ ttypescript рдЬреИрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЯреВрд▓ рдХреЗ рдмрд┐рдирд╛ рдмреЙрдХреНрд╕ рд╕реЗ рдХрд╕реНрдЯрдо рд░реВрдкрд╛рдВрддрд░рдг, рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╕реАрдорд┐рдд рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ - https://github.com/webschik/typescript-polyfills-generatorред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░реНрд╕ рдПрдкреАрдЖрдИ рд╡рд┐рдХрд╛рд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ babel рдЫреЛрдбрд╝рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЦреЛрд▓реЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдЙрди рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрднреА рднреА @babel/preset-env рдЬреИрд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

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

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

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

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

рд░реИрдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рдЬрдЯрд┐рд▓ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдорд░реНрдерди рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдмрдирд╛рдиреЗ рдХреЗ рд╣рд┐рдд рдореЗрдВ, рдореИрдВрдиреЗ ts-patch ( npm github ) рдирд╛рдордХ рдПрдХ рдЯреВрд▓ рд▓рд┐рдЦрд╛ рд╣реИред

рдмрд╕ ts-рдкреИрдЪ (рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдпрд╛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ts-patch install рдЪрд▓рд╛рдПрдВред рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░/рдпрд╛ рджреГрдврд╝рддрд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЯреАрдПрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдпрд╛ рд░реАрдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдкрд░ рдкреИрдЪ рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред (рд╡рд┐рд╡рд░рдг: ts-patch /? )

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

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

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ!

рд░реИрдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдФрд░ рдЬрдЯрд┐рд▓ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдорд░реНрдерди рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдмрдирд╛рдиреЗ рдХреЗ рд╣рд┐рдд рдореЗрдВ, рдореИрдВрдиреЗ ts-patch ( npm github ) рдирд╛рдордХ рдПрдХ рдЯреВрд▓ рд▓рд┐рдЦрд╛ рд╣реИред

рдмрд╕ ts-рдкреИрдЪ (рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдпрд╛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ts-patch install рдЪрд▓рд╛рдПрдВред рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░/рдпрд╛ рджреГрдврд╝рддрд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЯреАрдПрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдпрд╛ рд░реАрдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдкрд░ рдкреИрдЪ рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред (рд╡рд┐рд╡рд░рдг: ts-patch /? )

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

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

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ!

рдХреНрдпрд╛ рдЗрд╕реЗ рдЙрдЪрд┐рдд рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ/рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? :)

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

https://github.com/fuse-box/fuse-box/blob/master/docs/plugins/pluginCustomTransform.md

рдХреНрдпрд╛ рдЗрд╕реЗ рдЙрдЪрд┐рдд рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ/рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? :)

TS рдЯреАрдо рдиреЗ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЗрд╕реЗ рдореВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдирд┐рд░реНрдгрдп рдХреЗ рдЙрдирдХреЗ рдХрд╛рд░рдг рд╕рдордЭ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ!

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

рдпрджрд┐ рд╕рдорд░реНрдерди рджреНрд╡рд╛рд░рд╛, рдЖрдк рдЗрд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВ, рддреЛ рдореЗрд░реА рдпреЛрдЬрдирд╛ рдЗрд╕реЗ рдЪрд╛рд▓реВ рд░рдЦрдиреЗ рдФрд░ TS рдХреЗ рд╕рднреА рднрд╛рд╡реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╣реИ! рдореЗрд░рд╛ рдмрд╣реБрдд рд╕рд╛рд░рд╛ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред

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

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

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

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

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

@nonara рдореИрдВрдиреЗ ttypescript рдФрд░ ts-loader` рдХреЗ рд╕рд╛рде рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдореЗрдВ рдкреВрд░реНрдг рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ рд╣реИрдВред рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдПрдХ рдирдпрд╛ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕рдХреЗ рд▓рд╛рдкрддрд╛ "рдХреБрдЫ" рдФрд░ рдЙрди рдирдП рдмрдпрд╛рдиреЛрдВ рдХреЛ рдЕрдВрддрд┐рдо рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрд╕рд░реНрдЬрди рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред @weswigham рдХрд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдПрдХ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХрджрдо рд╣реИ ред рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдирд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдЯреАрдПрд╕-рд▓реЛрдбрд░ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рд╕реЗ рдирд┐рдкрдЯ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╕рд┐рд░рджрд░реНрдж рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдм рдпрд╣ рдХреЗрд╡рд▓ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдореЛрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реЗрдмрдкреИрдХ/рдмрдВрдбрд▓рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИ- рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ред рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рдЖрдпрд╛рдд рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ ред

@MeirionHughes рдЖрд╣, рдареАрдХ рд╣реИред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рд╛рдБ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╣реИред ttypescript рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА program рдХреА рдПрдорд┐рдЯ рд╡рд┐рдзрд┐ рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП createProgram рдХреЛ рд╣реБрдХ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

  • рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди ts.emitFiles ts.transformNodes $ рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
  • ts.transformNodes рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд╕рд╛рде рдпрд╛ рдмрд┐рдирд╛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реАрдзреЗ ts.transform() рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреЗ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

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

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдореИрдВ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рд╣реИрдВрдбрдмреБрдХ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХреА рдЬрд╛ рд╕рдХреЗ рдФрд░ рд╕рд╛рде рд╣реА рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

https://github.com/madou/ts-transformer-handbook/blob/master/translations/en/transformer-handbook.md

рдпрджрд┐ рдЖрдк рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЙрд╕ рдкрд░ рдХреБрдЫ рдирд┐рдЧрд╛рд╣реЗрдВ рдкрд╕рдВрдж рдЖрдПрдВрдЧреА

@madou рдореИрдВрдиреЗ рдЯреАрдПрд╕ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдкрд░ рдПрдХ рдмрдВрдЪ рдкреЛрд╕реНрдЯ рднреА рд▓рд┐рдЦрд╛ https://levelup.gitconnected.com/writing-typescript-custom-ast-transformer-part-1-7585d6916819

рдЗрд╕ рдкрд░ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╣реИ?

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрдд рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рд╕реНрдЯреИрдЯрд┐рдХ рдЯрд╛рдЗрдкреНрд╕ рдФрд░ рд░рдирдЯрд╛рдЗрдо JS рдХреЗ рдмреАрдЪ рдЗрдВрдЯрд░рдСрдк рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рднрджреНрджрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдореБрджрд╛рдп-рд▓рд┐рдЦрд┐рдд рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ, рдЬреИрд╕реЗ https://github.com/dsherret/ts-nameof , https://github.com/kimamula/ts-transformer-keys - рд▓реЗрдХрд┐рди рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдкреНрд▓рдЧрдЗрди рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдПрдХ рдЬреЛрдЦрд┐рдо рднрд░рд╛ рддрдХрдиреАрдХреА рдирд┐рд░реНрдгрдп рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рд╕реЗ рд╕рдореБрджрд╛рдп рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рднрд╡рд┐рд╖реНрдп рдХреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рдЬрд╛рдПрдЧреА, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред

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

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

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдХреА рд╕реНрдерд┐рддрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрдареЛрд░ рджрд┐рдЦрддреА рд╣реИред

рдРрд╕реЗ рд░реВрдкрд╛рдВрддрд░рдг рднреА рд╣реИрдВ рдЬреЛ рднрд╛рд╖рд╛ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЖрд╕рд╛рди рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмреИрдмреЗрд▓-рдкреНрд▓рдЧрдЗрди-рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо-рд░рд┐рдПрдХреНрд╢рди-рдЬреЗрдПрд╕рдПрдХреНрд╕-рд╕реЛрд░реНрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рд┐рдПрдХреНрдЯ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рдкреНрд░реАрд╕реЗрдЯ ( @babel/preset-react ) рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рдпрд╣ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ

<sometag />

рдореЗрдВ

<sometag __source={ { fileName: 'this/file.js', lineNumber: 10 } } />

рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА react рдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорд╛рдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ: https://github.com/dropbox/ts-transform-react-jsx-source

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ @mhegazy рдиреЗ рджреЛ рдмрд╛рд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ TS рдЯреАрдо рдХреЗ рдкрд╛рд╕ tsconfig рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ "рдкреНрд▓рдЧрдЗрдиреНрд╕" рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рддрд░реНрдХ рд╣реИ?

рдХреНрдпрд╛ рдЖрдк рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд░рд╣реЗрдВрдЧреЗ? рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ ttypescript tsconfig рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ рд╡рд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред

рдмрдХреНрд╕реЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ:

1) рд╕реНрдХреАрдорд╛ рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
2) рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЬреЗрд╕рди рдХреЛ рдЕрдХреНрд╖рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ рддрд╛рдХрд┐ рднреЗрджрднрд╛рд╡ рд╡рд╛рд▓реЗ рдпреВрдирд┐рдпрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рд░рдл рди рд╣реЛред
3) css/yaml рдФрд░ рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреИрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЖрдпрд╛рдд рдХрд░рдирд╛
4) рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдкреНрд░рд╢реНрди рдмрдирд╛рдирд╛ рдЬреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ
5) рдЬреЗрдПрд╕рдПрдХреНрд╕ рдХреЛ рдПрдЪрдЯреАрдПрдордПрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рддрд╛рдХрд┐ рд╡реЗ рдЖрдВрддрд░рд┐рдХ HTML рдЗрдВрдЬреЗрдХреНрд╢рди рд╣реЛ рд╕рдХреЗрдВ
5) tsconfig рдкрде рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдЖрдпрд╛рдд рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ред

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

рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЗ рд╕рд╛рде https://github.com/atlassian-labs/compiled-css-in-js рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реБрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреВрджрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдкреНрд░рд┐рдп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо, рдХреГрдкрдпрд╛ рдЗрд╕ рдкрд░ рдЕрдкрдиреА рдПрдбрд╝реА рдЦреАрдВрдЪрдирд╛ рдмрдВрдж рдХрд░реЗрдВ <_<

рдЗрд╕ рдкрд░ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╣реИ?

рд╕реНрдерд┐рддрд┐?

рджреЛрд╕реНрддреЛрдВ рдХреНрдпрд╛ рдЦрдмрд░ рд╣реИ?

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

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

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореБрдЭреЗ рдЯрд╛рдЗрдк-рдЪреЗрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИрдХреНрд╕ рдЪрд╛рд╣рд┐рдП? рдореИрдВ рдПрдХ рдЫреЛрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рдЬреЛ рдХреБрдЫ рдЬрд╛рджреВ рдХрд░рддрд╛ рд╣реИ:

type Human = {
    name: string,
    age: number
}

const isValid = check<Human>({ name: 'Carl', age: 16 }) // => true
const isValid = check<Human>({ name: 'Carl' }) // => false

рдлрд╝рдВрдХреНрд╢рди check рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░-рдЧрд╛рд░реНрдб рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЧрдпрд╛! рдореИрдВ рдЗрд╕реЗ рдмрд╛рдмреЗрд▓ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ? рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореБрдЭреЗ ttypescript рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ...

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

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

рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк ttypescript рдпрд╛ ts-patch рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

@ ilya-buligin рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдЖрдк рдкрд░рд┐рд╡реЗрд╢ рд╕реНрдерд┐рд░рд╛рдВрдХ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

declare const check: <T>(value: unknown) => value is T;

const isValid = check<Human>({ name: 'Carl', age: 16 }) // => true

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ check рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЖрдк рдЗрд╕реЗ рдмреИрдмреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рд╕реЗ рдмрджрд▓ рджреЗрдВрдЧреЗред

@ рдЬрд╕реНрдЯ-рдмреЛрд░рд┐рд╕ рдореИрдВ рдмреИрдмреЗрд▓ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ <T> рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ?

рдпрд╣ рдзрд╛рдЧрд╛ рдХрд╛рдлреА рджреЛрд╣рд░рд╛рд╡ рдФрд░ рдСрдл-рдЯреЙрдкрд┐рдХ рд╣реЛ рд░рд╣рд╛ рд╣реИред @RyanCavanaugh рд╢рд╛рдпрдж рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рддрдм рддрдХ рд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рди рд╣реЛред

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

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

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

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

Antony-Jones picture Antony-Jones  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

kyasbal-1994 picture kyasbal-1994  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ