рдЪреВрдВрдХрд┐ #13764 рдЖ рдЪреБрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдореИрдВ рдПрдкреАрдЖрдИ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдХреЗрд╡рд▓ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рдЯреАрдПрд╕рд╕реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЕрд╕рдВрдЧрддрддрд╛ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди tsc рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рдХреЗ рд╕рдорд╛рди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдПрдХ рдкреНрд▓рдЧрдЗрди рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЛ рддреГрддреАрдп рдкрдХреНрд╖ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдкреНрд░реЙрдХреНрд╕реА #12231 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИред рдпреЗ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рддрдм рдореМрдЬреВрджрд╛ рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕/рдмрд┐рд▓реНрдб рд╡рд░реНрдХрдлреНрд▓реЛ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреАрдХреГрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рдпрджрд┐ рдХрд┐рд╕реА рдЕрдиреБрднрд╡реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд╛рд╕ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рддреЛ рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред
рд╣рдо рдЕрд▓реНрдкрд╛рд╡рдзрд┐ рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд▓рдЧрдЗрди рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрдирдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рдирдореВрдиреЗ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИрдВред
рдореИрдВ рдПрдХ рдЦреБрд▓рд╛ рдкреНрд▓рдЧрдЗрди рдПрдкреАрдЖрдИ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдЯреАрдПрд╕-рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп 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;
}
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рд╕рдкреЛрд░реНрдЯ рдФрд░ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред
рдореБрдЭреЗ рднреА рдЗрд╕ рдлреАрдЪрд░ рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ @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 рдФрд░ рдЗрд╕рдХреА рдХреЛрдб рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо рдЯрд╛рдЗрдк-рдЯреВ-рдХреЛрдб рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд░реВрдк рдореЗрдВ
рд╣рдо рдХреЛрдб рдореЗрдВ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдорд╛рд░реНрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдХреЛрд░реЗрдЯрд░ рдПрдХ рдирдХрд▓реА рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд▓рдХреНрд╖реНрдп рд╣реИ
рдкреНрд░рджрд░реНрд╢рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдирд╛рдо рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рд╕рд╛рджреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд░реНрдЧ рдореЗрдВ рдбрдВрдк рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдг рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬрд╝ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рднрдЧрд╡рд╛рди рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
https://github.com/Microsoft/vscode-typescript-tslint-plugin
git clone https://github.com/zpdDG4gta8XKpMCd/code-gen.git
. рдЪрд▓рд╛рдПрдВcode-gen
: cd ./code-gen
1-install.bat
2-build.bat
3-install-some-more.bat
4-try.bat
test.ts
( Ctrl + P
-> test.ts
) рдкрд░ рдЬрд╛рдПрдВinterface Data {
one: string;
another: number;
}
function gen<_T>() {
return function (meh: any) {};
}
@gen<Data>()
export class Gen {
}
@gen<Data>()
рдХреЗ рддрд╣рдд рдПрдХ рдШреБрдорд╛рд╡рджрд╛рд░ рд░реЗрдЦрд╛ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ
Quick fix...
рдЪреБрдиреЗрдВ -> Needs a rewrite, wanna fix?
рд╕реНрд╡рдд: рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ:
рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк 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_ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЙрдкрдпреБрдХреНрдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк (рдФрд░ рдореЗрд░реЗ рд╕рд╣рд┐рдд рдХрдИ рдЕрдиреНрдп) рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рджреЛрд╖ рдирд╣реАрдВ рд╣реИ, рдФрд░ "рд▓рд╛рдкрд░рд╡рд╛рд╣реА" рдХрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдирд╣реАрдВ рд╣реИред рдХреГрдкрдпрд╛ рд╕рдореНрдорд╛рди рдХрд░реЗрдВред
рдУрд╣, рдХреГрдкрдпрд╛ рдЗрд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рди рд▓реЗрдВ, рдпрд╣реА рд╡рд╣ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореИрдВ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреА рд╢рд┐рдХрд╛рдпрддреЗрдВ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рдореЗрд░рд╛ рд╡реНрдпрдХреНрддрд┐рддреНрд╡ рдмрд╣реБрдд рдЦрдЯреНрдЯрд╛ рд╣реИ (рдЪрд┐рдХрд┐рддреНрд╕реАрдп рд╕реНрдерд┐рддрд┐) рдФрд░ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЦреБрдж рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдмрд╣реБрдд рдЦреЗрдж рд╣реИ
рдЖрдк рд▓реЛрдЧ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░рдирд╛ рдмрдВрдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ
@zpdDG4gta8XKpMCd рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЖрдкрдиреЗ рдХреНрдпрд╛ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ рд╣реИ? рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реИ; рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдиреЗ рдПрдХ (рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рднреА) рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдпрд╛ рд╣реИ рддреЛ рд╡реЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдПрдХ рдЪрд┐рдХрд┐рддреНрд╕рд╛ рд╕реНрдерд┐рддрд┐ рдкрд░ рдЕрдкрдиреА рдЕрд╢рд┐рд╖реНрдЯрддрд╛ рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ; рд╡реЗ рдРрд╕реЗ рд╢рдмреНрдж рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдиреЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╕реНрд╡реЗрдЪреНрдЫрд╛ рд╕реЗ "рдЯрд┐рдкреНрдкрдгреА" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рд╣реИред рдХреЛрдИ рднреА рдЪрд┐рдХрд┐рддреНрд╕реАрдп рд╕реНрдерд┐рддрд┐ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдмреЛрд▓реЛ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЯрд╛рдЗрдк рди рдХрд░реЗрдВред рдЖрдкрдХреЛ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рднреА рдореМрдХрд╛ рдорд┐рд▓рд╛ рд╣реИ, рдлрд┐рд░ рднреА рдЖрдкрдиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЛ рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ _now_ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдмреИрдмреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд▓рдЧрднрдЧ рд╕рднреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдореЗрд╢рди рдХреЛ рдЖрдк рдЬрд┐рддрдиреА рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рддреЗрдЬрд╝ рднреА рд╣реИред
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк Microsoft рдХреЗ рднрдВрдбрд╛рд░ рд╕реЗ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдореЗрд░рд╛ рд░реЗрдкреЛ рд╣реЛрддрд╛, рддреЛ рдЖрдк рдЕрдкрдиреЗ рдЖрдЦрд┐рд░реА рд╕реНрдЯреНрд░реЙ рдкрд░ рд╣реЛрддреЗред
рдареАрдХ рд╣реИ, рддреБрдордиреЗ рдореБрдЭреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛, рдлрд┐рд░ рдХреНрдпрд╛
рдХреНрдпрд╛ рдореИрдВ рдХрднреА рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддрд╛ рд╣реВрдБ? рдХреНрдпрд╛ рдореИрдВ рдПрдХ рдирдпрд╛ рдЦрд╛рддрд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдБ?
рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдЦрд╛рддреЗ рдХреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд░рд╡рд╛рд╣ рд╣реИ?
рд╡реИрд╕реЗ рднреА, рд╣рд╛рдБ, рдореИрдВрдиреЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ:
рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╢реНрд░реЗрдгреА рд╣реИ рдЬрд┐рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдЬреЛ рдХрд┐ рдорд╛рдореВрд▓реА рдФрд░ рдХрдо рд░реБрдЪрд┐ рд╡рд╛рд▓реА рд╣реИрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдХреБрдЫ рднреА рдЧрдВрднреАрд░ - рдФрд░ рдЖрдк рдирд╣реАрдВ рд╣реИрдВ
рдЪреВрдБрдХрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдЖрдк рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕рдорд╕реНрдпрд╛ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 224 рдЕрдВрдЧреВрдареЗ рдКрдкрд░ рд╣реЛрдиреЗ рдкрд░ рднреА) рд╡рд░реНрд╖реЛрдВ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рдХрднреА рднреА рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдЖрдЬ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреЛ рднреА рд╕рд╛рдзрди рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдлрд░реНрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ (рдореБрдЭреЗ рдХреБрдЫ рднреА рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрд╖ рди рджреЗрдВ)
@ zpdDG4gta8XKpMCd рдЬрд┐рддрдирд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдирд┐рдВрджрдХ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рдпрд╣рд╛рдВ рджреВрд╕рд░реЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ - рд╣рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХреЛ рд╕рднреНрдп рдФрд░ рд╕рдореНрдорд╛рдирдЬрдирдХ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ ред
@Janpot рд╣рд╛рдБ, рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ WIP рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЬрдм @rbuckton рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╕реНрдерд┐рддрд┐ рдкрд░ рдХреБрдЫ рдФрд░ рд╡рд┐рд╡рд░рдг рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкреНрд▓рдЧрдЗрди рдмрд┐рдВрджреБрдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ 3.5 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрддрд╛рдпрд╛ рдерд╛), рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реБрдХ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдПрдХ рдкреНрд░рдореБрдЦ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдПрдХрдореБрд╢реНрдд рд╣реА рдХрд░реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реНрдпрд╛рдкрдХ рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╕рдорд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдкреВрд░реНрд╡ рдФрд░ рдмрд╛рдж рдХреЗ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рд╡реНрдпрд╛рдкрдХ рд╣реЛред
@DanielRosenwasser рдЗрд╕рдореЗрдВ рдЗрддрдирд╛ рдирд┐рдВрджрдХ рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ 2 рд╢рдмреНрдж рдХрд╣реЗ рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧрд╣рд░рд╛ рдЦреЗрдж рд╣реИ
рд╡реИрд╕реЗ рднреА, рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдЪреАрдЬреЗрдВ рдХреИрд╕реЗ рдЪрд▓рддреА рд╣реИрдВ, рдЗрд╕ рдкрд░ рд╕реНрд╡рд╕реНрде рдирд┐рд░рд╛рд╢рд╛ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рдЖрдк рдкрд░ рджреЛрд╖ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХреНрдпрд╛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рд╡рд░реНрд╖реЛрдВ рддрдХ рдмреИрдардиреЗ рджреЗрдирд╛ рд╕рд┐рд░реНрдл рдЕрдВрдЧреВрдард╛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ
рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдФрд░ рдкрд╣рд▓реЗ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рджрд░реНрд╢рдХреЛрдВ рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рдХреБрдЫ рдЕрддреНрдпрдзрд┐рдХ рд╡рд╛рдВрдЫрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдХреНрдпреЛрдВ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдирд┐рд░рд╛рд╢рд╛ рдХреА рдбрд┐рдЧреНрд░реА рдХрдо рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХрд╣реЗрдВ:
рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдмрд╛рддрдЪреАрдд рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: https://github.com/Microsoft/TypeScript/issues/30696#issuecomment -478799258
рдердореНрд╕ рдЕрдк рд╣реЛрдиреЗ рд╕реЗ рдкрддрд▓реА рд╣рд╡рд╛ рд╕реЗ рдирдП рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рдмрдирддреЗ рд╣реИрдВ, рдЬрдЯрд┐рд▓ рдФрд░ рдХрдард┐рди рдирд┐рд░реНрдгрдп рд╕рд░рд▓ рдФрд░ рдЖрд╕рд╛рди рд╣реЛрддреЗ рд╣реИрдВ, рдореМрдЬреВрджрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЗрди-рдлрд╝реНрд▓рд╛рдЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ, рдЕрдиреНрдп рдХрд╛рдо рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддреЗ рд╣реИрдВ, рдЕрддрд┐-рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖реА рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ, рдпрд╛ рд╡реНрдпрд╛рдкрдХ рдФрд░ рд╕реНрдерд╛рдпреА рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реБрдЭрд╛рд╡ рдХреЛ рдХреЗрдВрджреНрд░рд┐рдд рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓реЗрдВред
рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрддреНрдпрдВрдд рдЬрдЯрд┐рд▓ рдФрд░ рдЙрдЪреНрдЪ рд░рдЦрд░рдЦрд╛рд╡ рд╡рд╛рд▓реЗ рдХрд╛рдо рд╕реЗ рдкрд╣рд▓реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рд░рд▓ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╛ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ , рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк #30696 рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд░рд╣реЗ рдереЗ) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХреЛрдИ рдЦреЗрдж рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдХрд┐рд╕реА рдХреЛ рдЕрдВрджрд░ рдЖрдиреЗ рдФрд░ рдПрдХ рдЯрдкрдХрд╛ рд╣реБрдЖ рдирд▓ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рддреИрдпрд╛рд░ рд╣реИрдВ, рдЬрдмрдХрд┐ рддрд╣рдЦрд╛рдиреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдШрд░ рдХреЗ рдКрдкрд░ рдПрдХ рдФрд░ рдХрд╣рд╛рдиреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдкрд░ рдЕрднреА рднреА рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
@zpdDG4gta8XKpMCd рдЖрдкрдХреЛ рдХрд┐рд╕реА рдХреЛ рджреЛрд╖ рдХреНрдпреЛрдВ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП? рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдЦреБрдж рдХреЛ рджреЛрд╖ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреЗрддреЗ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рд╣реИ? рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд░рдЪрдирд╛рддреНрдордХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХреИрд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдП?
рдЕрд░реЗ рдпрд╛рд░, рдЙрд╕ рдкрд╛рд░рджрд░реНрд╢реА рд▓реЗрдЦрди рдХреЗ рдмрд╛рдж рднреА рдЖрдкрдиреЗ рдЕрднреА-рдЕрднреА рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдХреЗрд╡рд▓ 2 рд╕рдкреНрддрд╛рд╣ рдХреЗ рдмрд╛рдж рднрд╛рд▓реВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╣рд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ? рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛрдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рд╛рде рдореЗрдВ 1500+ рдХрд╛рд░реНрдп рд╣реЛрдВ рдФрд░ рдЖрдкрдХреЛ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ред рд╣рдорд╛рд░реА рдЯреАрдо рдореЗрдВ, рд╣рдо рд▓рдЧрднрдЧ 100 рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХрд╛рдлреА рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ 15 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛
рднрдЧрд╡рд╛рди рдХреЗ рд▓рд┐рдП @FredyC , рдпрд╣ рдХрд╣рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореЗрд░реЗ рдХрд╛рдордХрд╛рдЬ рдХреЛ рджреЗрдЦреЗрдВ
рд╣рд╛рдБ, рдореИрдВ рдФрдкрдЪрд╛рд░рд┐рдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдХреНрдпреЛрдВрдХрд┐:
рдореИрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд╕реНрддрд░ рддрдХ рдирд╣реАрдВ рд╣реВрдВ
рд╕рд╛рдзрд╛рд░рдг рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдореЛрджрди рдХреА рдПрдХ рд▓рдВрдмреА рд▓рд╛рдЗрди рд╣реИ, рдФрд░ 2 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ рд╡рд░реНрддрдорд╛рди рдХреЛрдбрдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрд┐рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдмрд░рджрд╕реНрдд рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЗрддрдирд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ
рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рднрд╡реНрдп рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдВрдбрд░реНрд╕ рд╣реЗрдЬрд▓рдмрд░реНрдЧ рдЬреИрд╕реЗ рдХреБрдЫ рд╣реА рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ
рдЖрдк рд╣рддрд╛рд╢рд╛ рд╡рд╛рд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рджреВрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдФрд░ рдореИрдВ рдпрд╣рд╛рдБ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдБ
рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЦреЗрд▓ рдореЗрдВ рдпреЗ рдХрд╛рд░рдХ рд╣реИрдВ:
рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдЗрди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рдорд┐рд╢реНрд░рдг рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рдерд╛
рдореЗрд░рд╛ рд╣реЛ рдЧрдпрд╛, рдпрд╣ рдмрд╣реБрдд рджреВрд░ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ рдЬрд┐рдирдХреА рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдареЗрд╕ рдкрд╣реБрдВрдЪреА рд╣реИ, рдореИрдВ рдПрдХ рд╢рдмреНрдж рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛
https://github.com/Microsoft/TypeScript/issues/14419#issuecomment -483920640 рдХреА рдирд┐рд░рдВрддрд░рддрд╛
рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдорд╛рд░реНрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдиреАрдЪреЗ рдЬреЛ рд╣реИ рд╡рд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо toRandom...
рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдирд╛ рд╕реНрд░реЛрдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд░ рд╣реИ
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдпреЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:
toRandom...
рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд╣рдд рд╕реНрдХреНрд╡рд┐рдЧрд▓реА рд▓рд╛рдЗрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдпрд╣рд╛рдБ 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
рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрд░реЗ рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдПрдХ рд╕рдкрдирд╛ рд╕рдЪ рд╣реЛрдЧрд╛
рд▓реЗрдХрд┐рди рддрдм рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рдЕрдкрдирд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдФрд░ рднреА рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ
рдпрд╣рд╛рдБ рдореЗрд░реА рд╕реЛрдЪ рдХреА рд░реЗрдЦрд╛ рд╣реИ:
рдпрд╣ рд╕рдм рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЦреБрдж рдХреЛ рдХреБрдЫ рдРрд╕рд╛ рд▓рд┐рдЦрддреЗ рд╣реБрдП рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐:
рдФрд░ рдореИрдВ рдЙрд╕рдХреЗ рдКрдкрд░ рдПрдХ рдФрд░ рдЬреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛
рдХрд╛рд╢ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдХреЛрдб рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдореЗрдВ рдкреНрд▓рдЧрд┐рдВрдЧ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реЛрддрд╛, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ
рдФрд░ рдЗрд╕ рддрд░рд╣ рд╣рдо рдореИрдХреНрд░реЛрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ: #4892
рдореЗрд░рд╛ рд▓реИрдкрдЯреЙрдк рдХреЗрд╡рд▓ рдЙрддрдиреА рд╣реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдзрд╛рд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдВ:
- рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ vscode
- рдПрдХ рджреНрд╡рд╛рд░рд╛ tslint
@zpdDG4gta8XKpMCd рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рд╣реА рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рд╣реЛрдЧреА рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЗ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде tslint рдкреНрд▓рдЧрдЗрди рдкреНрд░реЙрдХреНрд╕реА рдХрд░реЗрдЧрд╛ред
рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдЖрдк рдпрд╣рд╛рдВ рдЬреЛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рджреЗ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдпрд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡реИрд╕реЗ рднреА, рдЖрдЗрдП рдпрд╣рд╛рдВ рд╡рд┐рд╖рдп рдкрд░ рдФрд░ рдХреЗрд╡рд▓ рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдкрд╛рджрдХ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди/рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрдЬрд╛рдп tsc
рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХреЛ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕рдВрдкрд╛рджрдХ рдХреЗ рднреАрддрд░ рдРрд╕рд╛ рдХрд░рдирд╛ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдЬрдм рд╕реЗ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рд╣рд░рд╛ рджреЗрддрд╛ рд╣реИ)ред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЬреЛ рдпрд╣рд╛рдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЙрд╕рдХрд╛ рд╕рдВрдкрд╛рджрдХ/tsserver рдпрд╛ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдмрд╣реБрдореВрд▓реНрдп рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛
tsc
рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд рд░рдЦрдиреЗ рдкрд░ рдореИрдВ рдЖрдкрд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐
рдореЗрд░реЗ рд╕реБрдЭрд╛рд╡ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдмрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЬрдмрдХрд┐ рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреАрдо рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдкрд░ рдХрдард┐рди рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рдордп рд▓реЗ рд░рд╣реА рд╣реИ), рддреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ?
рдпрджрд┐ рдЖрдк рдЬреЛрд░ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдХрд╣реАрдВ рдФрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдХреГрдкрдпрд╛ рдмреЛрд▓реЗрдВ
рд▓реЗрдХрд┐рди 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 рд╢рд╛рдпрдж рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рддрдм рддрдХ рд▓реЙрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рди рд╣реЛред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдПрдХ рдЦреБрд▓рд╛ рдкреНрд▓рдЧрдЗрди рдПрдкреАрдЖрдИ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдЯреАрдПрд╕-рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп tsconfig.json рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐ рдЯреАрдПрд╕-рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ рдореИрдВ рдЕрдм tsc рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рдореМрдЬреВрджрд╛ рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдФрд░ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд рдирд╣реАрдВ рд╣реИред