рдирдорд╕реНрддреЗ,
рдЯреАрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг : рез.рез
рджрд┐рдпрд╛ рд╣реБрдЖ
function foo() {
var x = 10;
var y = 11;
}
рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рдерд╛
function foo() {
var x = 10;
var y = 11;
}
рдирдП рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдЧрд╛рдпрдм рд╣реИ
function foo() {
var x = 10;
var y = 11;
}
(рджреЛрдиреЛрдВ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдиреЗ рдкрд╣рд▓реА рдЦрд╛рд▓реА рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдирдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдХрджрдо рдЖрдЧреЗ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИред)
рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдбреАрдмрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдиреБрднрд╡ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдХреБрдЫ рдкреГрд╖реНрдарднреВрдорд┐ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдирд╛ ... рдирдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рднреА рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо _consistently_ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЦрд╛рд▓реА рд▓рд╛рдЗрди рдкрд░рд┐рд░рдХреНрд╖рдг рд╣рдореЗрд╢рд╛ рдПрдХ рд╣рд┐рдЯ рдпрд╛ рдорд┐рд╕ рдЪреАрдЬ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИ рдЬрдм рдпрд╣ рдЙрди рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рдЬреЛ рдкреБрдирд░реНрд▓реЗрдЦрди, рдЬреИрд╕реЗ рд╡рд░реНрдЧ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рдЕрдзреАрди рд╣реЛрддреЗ рд╣реИрдВред рд╣рдо рдЯрд┐рдкреНрдкрдгреА рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдареАрдХ рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдореИрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдиреБрднреВрддрд┐ рд░рдЦрддрд╛ рд╣реВрдВ, рддреЛ рдРрд╕рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрд╛рдд рдирд╣реАрдВ рд╣реИред
@NoelAbrahams рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдк рдХреМрди рд╕реЗ рдореБрджреНрджреЗ рджреЗрдЦрддреЗ рд╣реИрдВ?
@ahejlsberg @NoelAbrahams I рдиреЗ рдореВрд▓ рдХреЛрдбрдкреНрд▓реЗрдХреНрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛рдпрд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдФрд░ newline рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдПрдХ рднрдпрд╛рдирдХ рдХрд╛рдо рдХрд┐рдпрд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрди рдирд┐рд░реНрдорд╛рдгреЛрдВ рдкрд░ рднреА, рдЬрд┐рдиреНрд╣реЗрдВ рднрд╛рд░реА рдкреБрдирд░реНрд▓реЗрдЦрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЬреИрд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрд░-рдлрд╝рдВрдХреНрд╢рди) рдпрд╣ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рд╡рд╣реА рдХрд░реЗрдЧрд╛ рдЬреЛ рдЖрдк рд╕рд╣рдЬ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред
рд▓рд╛рдЗрди рдкрд░рд┐рд░рдХреНрд╖рдг рдЬреНрдпрд╛рджрд╛рддрд░ рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдкреЗрдХреНрд╖ рд░рд┐рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓рд╛рдЗрди рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдп рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ:
module M {
}
module N {
}
рдлрд┐рд░ рдЬрдм рдЖрдк 'рдПрди' рдХреЗ рд▓рд┐рдП рдЖрдИрдЖрдИрдПрдлрдИ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ "рд╣рдореЗрдВ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рдЯреНрд░рд┐рд╡рд┐рдпрд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рд╣рдо рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдкрд┐рдЫрд▓реЗ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рддрддреНрд╡"ред
рдпрд╣рд╛рдВ рдкрд╣рд▓реЗ / рдмрд╛рдж рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдЙрддреНрд╕рд░реНрдЬрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдиреЗ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛рдо рдХрд┐рдпрд╛ рдХрд┐ рд╕рдВрд░рдХреНрд╖рд┐рдд рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ / рдирд┐рд╖реНрдард╛ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде
https://typescript.codeplex.com/SourceControl/latest#tests/Fidelity/emitter2/ecmascript5/Parser.ts
https://typescript.codeplex.com/SourceControl/latest#tests/Fidelity/emitter2/ecmascript5/Parser.ts.expected
рдЖрдк рдпрд╣рд╛рдБ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
https://typescript.codeplex.com/SourceControl/latest#tests/Fidelity/emitter/ecmascript5/
рдПрдХрдорд╛рддреНрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╡рд╣ рдерд╛ 'рд╕рдВрд░реЗрдЦрдг'ред рдпрд╛рдиреА рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХреЛрдб рдерд╛ рдЬрд┐рд╕реЗ рдореВрд▓ (рдкреИрд░рд╛рдореАрдЯрд░ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп) рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХреЛрдб рдХреЛ рднреА рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рддреБрдЪреНрдЫ рд╣реЛрддрд╛ред
рдЗрд╕рдиреЗ рдХрд╣рд╛, рдЯреАрдПрд╕ рд╕реЗ рдЬреЗрдПрд╕ рддрдХ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдиреЗ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдЖрдк рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐:
https://typescript.codeplex.com/SourceControl/latest#tests/Fidelity/emitter/ecmascript5/ClassDeclaration/ClassDeclaration2.ts
https://typescript.codeplex.com/SourceControl/latest#tests/Fidelity/emitter/ecmascript5/ClassDeclaration/ClassDeclaration2.ts.expected
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреИрд╕реЗ рдмрдпрд╛рдиреЛрдВ рдХреЛ рдареАрдХ рд╕реЗ (рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдлреИрд▓рдиреЗ рдкрд░ рднреА) рд╣рдо рдиреЗрд╕реНрдЯреЗрдб рдореЙрдбреНрдпреВрд▓ рдФрд░ рд╡рд░реНрдЧ рдХреЛ рдЖрдИрдЖрдИрдПрдл рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ
@ahejlsberg , рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдФрд░ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯреНрд╕ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ рдЬрдм рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдЯреАрдХ рдкрддреНрд░рд╛рдЪрд╛рд░ рд╣реЛрддрд╛ рд╣реИред
рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд░рд╣ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдЯреАрдПрд╕ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдиреА рд▓рдВрдмрд╛рдИ рдЪрд▓реА рдЧрдИ рд╣реИ рдХрд┐ _beautiful _ JavaScript (: рдореБрд╕реНрдХрд╛рди :) рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
@ahejlsberg @NoelAbrahams рдПрдХ рдРрд╕рд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдореМрдЬреВрдж рд╣реИ рдЬреЛ рдЗрд╕ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рд╕реЗ рдереЛрдбрд╝рд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдЬрдм рд╕реЗрдЯрд░ / рдЧреЗрдЯреНрдЯрд░ рдЪреЗрдиреНрд╕ (рдЬреИрд╕реЗ jquery рдХреЗ рд╕рд╛рде) рдпрд╛ рдЪреЗрдирд┐рдВрдЧ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рджреМрд░рд╛рди рдирдИ рд▓рд╛рдЗрди рдлреАрдб рдЦреЛ рдЬрд╛рддреА рд╣реИред рдпрд╣ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рджрд░реНрдж рдмрд┐рдВрджреБ рд╣реИ рдЬрдм рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкреЗ:
(<any> x).a('#test')
.b('test')
.c(() => 'foo')
.d(() => 'bar')
.e(() => 5)
.f(() => 6);
рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:
x.a('#test').b('test').c(function () { return 'foo'; }).d(function () { return 'bar'; }).e(function () { return 5; }).f(function () { return 6; });
Chrome рдФрд░ sourceMaps рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдЕрднреА рднреА рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
http://www.typescriptlang.org/Playground#src = (% 3Cany% 3E% 20x) .a ('% 23test')% 0A% 20% 20% 20% 20% 20.b ('рдкрд░реАрдХреНрд╖рдг')% 0A% 09.c (()% 20% 3 рдбреА% 3E% 20'foo ')% 0A% 09.d (()% 20% 3 рдбреА% 3E% 20'bar')% 0A% 09.e (() 20% % 3 рдбреА% 3E% 205)% 0A% 09.f (()% 20% 3 рдбреА% 3E% 206)% 3 рдмреА
@mtraynham , рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред
рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЗрдирд▓рд╛рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╢рд░реАрд░ рд╣рдореЗрд╢рд╛ рдирдИ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрддрд╛ рдерд╛:
// TS
var x = () => 'foo';
// JS - old
var x = function () {
return 'foo';
};
// JS - new
var x = function () { return 'foo'; };
рдореИрдВрдиреЗ рднреА рдЗрд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рдпрд╛ рд╣реИ - рдХрднреА-рдХрднреА рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдФрд░ function
рддрд╛рдХрд┐ рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд╕рдордп рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░ рд╕рдХреВрдВред
@NoelAbrahams рдЖрд╣, рдореИрдВ рдЗрд╕ рд╕рдЯреАрдХ рдЙрд╕реА рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ... рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рдмрдЧ рдерд╛ (рд▓рд╛рдЗрди рдлреАрдбреНрд╕ рдХрд╛ рдЙрдиреНрдореВрд▓рди), рдпрд╛ рдореБрдЭреЗ рдПрдХ рдФрд░ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдореИрдВрдиреЗ рдЕрд▓рдЧ рдореБрджреНрджреЗ рдкрд░ # 2259 рдмрдирд╛рдпрд╛ред
рдПрдХ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдирд┐рджреЗрд╢рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирдИ рд▓рд╛рдЗрди рдХреА рдХреНрд╖рдорддрд╛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрдореНрдпреБрдирд┐рдЯреА рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдЕрдкреАрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрдирд░реЗрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдерд╛ред
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди рд╣рд╛рд▓ рдХреЗ рдЕрджреНрдпрддрди рдФрд░ "--removeComments" рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ @timjmartel рдХреЗ рд╕рдорд╛рди рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рднреА рдЗрд╕реЗ рдкрд╕рдВрдж
рдЕрдЧрд░ рд╣рдорд╛рд░реА рдЯреАрдо рдиреЗ рдХрднреА рдЯреАрдПрд╕ рдХрд╛ рдкрд░рд┐рддреНрдпрд╛рдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдмрджрд▓реЗ рд╣реБрдП рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦрд╛ рддреЛ рдорд╛рдирд╡-рд╣рд┐рддреИрд╖реА рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рд╣реЛрдиреЗ рдкрд░ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдЬреЗрдПрд╕ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЕрдкрдирд╛рдирд╛ рдЬреНрдпрд╛рджрд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред
рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ - рдЕрднреА рдХреЗ рд▓рд┐рдП - рдЙрдиреНрд╣реЗрдВ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рднрд▓реЗ рд╣реА рд╡реЗ рд╣рд┐рдЯ рдпрд╛ рдорд┐рд╕ рд╣реЛрдВ? рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдлреАрдЪрд░ рдХреЛ "--keepEmptyLines" рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдкреВрдЫрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ JS рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдкрдардиреАрдп JS рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдПред
рдЬрдВрдЬреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛? рдлрд┐рд░, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ "--oneCallForLine" рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдкреВрдЫрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдПрдХ рдФрд░ "рд╣рд┐рдЯ рдпрд╛ рдорд┐рд╕" рдЪреАрдЬ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рджред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрдВрдЬреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдмреНрдпреВрдЯрд┐рдлрд╛рдпрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдЗрддрдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд╕ tsconfig.json рдореЗрдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
preserveWhitespace: true/false
?
рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╕рдВрдХрд▓рдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ: https://www.typescriptlang.org/docs/handbook/compiler-options.html
рдореБрдЭреЗ рдЕрднреА рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖред рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рди рд░рдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ .ts рдХреЗ рдмрдЬрд╛рдп рдЧрд▓рддреА рд╕реЗ .js рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░ .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ / рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ред рддреЛ рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧреИрд░-рдореБрджреНрджрд╛ рд╣реИред
рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ tsc рдХреЗрд╡рд▓ .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣реА рд▓рд┐рдЦрддрд╛ рд╣реИ / рдХреЗрд╡рд▓ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tsc рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
рдЕрднреА рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред
@DanielRosenwasser рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЕрдЧрд░ рд╣рдо
рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
+1
+1
+1
рднреАрдбрд╝ preserveWhitespace: true/false
рдЪрд╛рд╣рддреА рд╣реИ
@ORESoftware ++
рдХрд╛рд░рдг рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЗрдПрд╕ рдХреЛ "рдиреАрдЪрд╛ рджрд┐рдЦрд╛рдиреЗ" рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрднреА рдпрд╣ рдирдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдПрд╕ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдШрдирд╛ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЬреЗрдПрд╕ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред
+1 preserveWhitespace: true/false
рд▓рд╛рдЗрдирдмреНрд░реАрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП
рдирд┐рдореНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде:
{
"lineBreak": {
"before": {
"FunctionDeclaration": ">=2",
"FunctionDeclarationOpeningBrace": 0,
"FunctionDeclarationClosingBrace": 1,
"MethodDefinition": ">=2",
"ClassDeclaration": ">=2"
},
"after": {
"FunctionDeclaration": ">=2",
"FunctionDeclarationOpeningBrace": 1,
"MethodDefinitionClosingBrace": ">=2",
"ClassClosingBrace": ">=2"
}
}
}
@mtraynham рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг:
(<any> x).a('#test')
.b('test')
.c(() => 'foo')
.d(() => 'bar')
.e(() => 5)
.f(() => 6);
рдирд╡реАрдирддрдо рд╕рдВрдХрд▓рдХ рдХреЗ рд╕рд╛рде рдпрд╣ рдЬреЗрдПрд╕ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ:
x.a('#test')
.b('test')
.c(function () { return 'foo'; })
.d(function () { return 'bar'; })
.e(function () { return 5; })
.f(function () { return 6; });
(рджреЗрдЦреЗрдВ TS PlayGround https://goo.gl/JViurr)
рдЯреАрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг 1.1 (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдореБрджреНрджрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛) рдХреЗ рдмрд╛рдж рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдореБрджреНрджрд╛ рдмрдВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? @ рд╣реЗрдЬреЗрд▓реНрд╕рдмрд░реНрдЧ ?
@ рд╡рд▓реЗрд░рд╛-рд░рдЬрд╝реБрд╡рди рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп # 2259 рдЦреЛрд▓рд╛ рдерд╛ред рдореЗрд░рд╛ рдореБрджреНрджрд╛ рд▓рд╛рдЗрди рдлреАрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрдЧ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╕рдЯреАрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред # 2259 рдХреЛ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ (рдордИ 2015) рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрд╣ рдмреНрд░рд┐рд▓- рдПрдВрдбреНрд░реА рдПрдлрд╝реЙрд░реНрдореЗрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрдЧ рдХреЗ рд╕рд╛рде, (рдЬрдм рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдореЗрдВ рд╢рдмреНрдж рдЖрдпрд╛рдд рд╣реЛрддрд╛ рд╣реИ рддреЛ рдХреЛрдИ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдирд╣реАрдВ рдерд╛):
{
"lineBreak": {
"before": {
"FunctionDeclaration": ">=2",
"FunctionDeclarationOpeningBrace": 0,
"FunctionDeclarationClosingBrace": 1,
"MethodDefinition": ">=2",
"ClassDeclaration": ">=2",
"ExportNamedDeclaration": 2
},
"after": {
"FunctionDeclaration": ">=2",
"FunctionDeclarationOpeningBrace": 1,
"MethodDefinitionClosingBrace": ">=2",
"ClassClosingBrace": ">=2"
}
}
}
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ esformatter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкреВрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЖрджрд┐ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рднреАрддрд░ рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЗрдВ рдФрд░ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рд╣рдо рдЧрджреНрдп рдореЗрдВ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреА рддрд░рд╣ рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рднреАрддрд░ рд╡реЗ рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИрдВред рдЙрдирдХреЗ рдмрд┐рдирд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрдардиреАрдпрддрд╛ рдЧреНрд░рд╕реНрдд рд╣реИред
@ahejlsberg рдореИрдВ ts-jest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдкрдиреА рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЧрд▓рдд рд▓рд╛рдЗрди рдирдВрдмрд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдореБрджреНрджрд╛ js рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЗрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЕрдВрддрд┐рдо рдЬреЗрдПрд╕ рдореЗрдВ рдЫреЛрдбрд╝рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдХреНрдпреЛрдВ рд╣реИред рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ? рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? :)
рдпрд╛ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? -> V4 рдЕрдЧрд▓рд╛ рдмрдбрд╝рд╛ рд╕рдВрд╕реНрдХрд░рдг # 3143
@JimTheMan рдпрджрд┐ рдЖрдк рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╢рд╛рдпрдж source-map-support
рдкреИрдХреЗрдЬ рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕рд╣реА рд╕реНрдЯреИрдХ рдХреЗ рдирд┐рд╢рд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднреА рднрд╛рдЧрддрд╛ рд╣реВрдВред рдореИрдВ рдПрдХ рдЕрд▓рдЧ рдкреИрдЪ рдмрдирд╛рдХрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдФрд░ рдкреИрдЪ рдореЗрдВ рд╡реНрд╣реЙрдЯреНрд╕рдПрдк рдХреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдпрд╛ред jsdiff рдЖрдкрдХреЛ рдПрдХ рд╕рдВрд░рдЪрд┐рдд рдкреИрдЪ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдФрд░ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдЙрд╕рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
import * as diff from 'diff';
const patch =
diff.parsePatch(diff.createPatch('file', oldText, newText, '', ''));
const hunks = patch[0].hunks;
for (let i = 0; i < hunks.length; ++i) {
let lineOffset = 0;
const hunk = hunks[i];
hunk.lines = hunk.lines.map(line => {
if (line === '-') {
lineOffset++;
return ' ';
}
return line;
});
hunk.newLines += lineOffset;
for (let j = i + 1; j < hunks.length; ++j) {
hunks[j].newStart += lineOffset;
}
}
return diff.applyPatch(oldText, patch);
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде, рдЖрдк рдореВрд▓ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рднреА рдкрдВрдХреНрддрд┐ рд╡рд┐рд░рд╛рдо рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@zeroliu рдХреНрдпрд╛ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╕рдордп рд╡рд┐рд▓рдВрдм рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ?
@ahejlsberg рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ?
рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ @ рд╡реЗрд▓реЗрд░рд╛-рд░реЛрдЬрд╝реНрд╡рд╛рдиред рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдореИрдВ 100-1000 LOC рдХреА 10-ish рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рдХрд┐рд╕реА рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рджреЗрд░реА рдХрд╛ рдкрд░рд┐рдЪрдп рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рдЕрднреА рддрдХ рдпрд╣рд╛рдБ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди? рдореИрдВ рдЗрд╕ рдореБрд╕реАрдмрдд рдореЗрдВ рднреА рднрд╛рдЧрддрд╛ рд╣реВрдБ ...
рдЬрдм рдореИрдВ рдЕрдкрдиреА рдЯреАрдо рдХреЗ рд╕рд╛рдереА @emadum рдиреЗ рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдпрд╛ рдХрд┐
const gulp = require('gulp');
const ts = require('gulp-typescript');
const through = require('through2');
function preserveNewlines() {
return through.obj(function(file, encoding, callback) {
const data = file.contents.toString('utf8');
const fixedUp = data.replace(/\n\n/g, '\n/** THIS_IS_A_NEWLINE **/');
file.contents = Buffer.from(fixedUp, 'utf8');
callback(null, file);
});
}
function restoreNewlines() {
return through.obj(function(file, encoding, callback) {
const data = file.contents.toString('utf8');
const fixedUp = data.replace(/\/\*\* THIS_IS_A_NEWLINE \*\*\//g, '\n');
file.contents = Buffer.from(fixedUp, 'utf8');
callback(null, file);
});
}
gulp.task('default', function () {
return gulp.src('src/**/*.ts')
.pipe(preserveNewlines())
.pipe(ts({
removeComments: false
}))
.pipe(restoreNewlines())
.pipe(gulp.dest('lib'));
});
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдЪрддреБрд░ рдЯрд┐рдкреНрдкрдгреА рдХреБрдЫ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдХреЛ рд░реЛрдХ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдЬ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреА рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рди рдУрд╡рд░рд╣реЗрдб рдиреНрдпреВрдирддрдо рдерд╛ред
hth
@mbroadst
рдореИрдВрдиреЗ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рдЕрдВрдд рдореЗрдВ рдЙрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдПрдХ npm рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдмрди рдЧрдпрд╛:
https://www.npmjs.com/package/gulp-preserve-typescript-whitespace
рдореИрдВ Readme рдореЗрдВ рдЕрдкрдиреА рдкреЛрд╕реНрдЯ рдХрд╛ рд╢реНрд░реЗрдп, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рдмреБрд░рд╛ рдордд рдорд╛рдирдирд╛ тАЛтАЛ:)
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рднреАрдбрд╝
preserveWhitespace: true/false
рдЪрд╛рд╣рддреА рд╣реИ@ORESoftware ++