рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.3 рдХреА рдШреЛрд╖рдгрд╛

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


рдмреНрд▓реЙрдЧ рдореЗрдВ рдореВрд▓

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдФрд░ JSDoc рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рднреА рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИ), рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдиреЗ .js рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдпрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рдЬреИрд╕реЗ рд╕рдВрдкрд╛рджрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрд╕ рдЕрдиреБрднрд╡ рдХреЛ рд╢рдХреНрддрд┐ рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИред


рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ NuGet рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде npm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 npm install -g typescript 

рдЖрдк рд╕рдВрдкрд╛рджрдХ рджреНрд╡рд╛рд░рд╛ рд╕рд╣рд╛рдпрддрд╛ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ



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


рдпреВрдирд┐рдпрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╡реНрдпрд╡рд╣рд╛рд░


рдЬрдм рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдпреВрдирд┐рдпрди рдЯрд╛рдЗрдк A | B A | B , рдпрд╣ рдЖрдкрдХреЛ A рдФрд░ B рджреЛрдиреЛрдВ (рдпрд╛рдиреА рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди) рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЖрдо рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


 interface A { aProp: string; commonProp: string; } interface B { bProp: number; commonProp: number } type Union = A | B; declare let x: Union; x.aProp; // error - 'B' doesn't have the property 'aProp' x.bProp; // error - 'A' doesn't have the property 'bProp' x.commonProp; // okay! Both 'A' and 'B' have a property named `commonProp`. 

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


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


 type CallableA = (x: boolean) => string; type CallableB = (x: boolean) => number; type CallableUnion = CallableA | CallableB; declare let f: CallableUnion; let x = f(true); // Okay! Returns a 'string | number'. 

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рдХрднреА-рдХрднреА, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рддрд┐рдмрдВрдзрд╛рддреНрдордХ рдерд╛ред


 type Fruit = "apple" | "orange"; type Color = "red" | "orange"; type FruitEater = (fruit: Fruit) => number; // eats and ranks the fruit type ColorConsumer = (color: Color) => string; // consumes and describes the colors declare let f: FruitEater | ColorConsumer; // Cannot invoke an expression whose type lacks a call signature. // Type 'FruitEater | ColorConsumer' has no compatible call signatures.ts(2349) f("orange"); 


рдПрдХ рддрд░рдл рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЦрд░рд╛рдм рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢, FruitEater рдПрд╕ рдФрд░ FruitEater рджреЛрдиреЛрдВ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ "orange" рд▓реЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ number рдпрд╛ рдПрдХ string ред


рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.3 рдореЗрдВ, рдпрд╣ рдЕрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред


 type Fruit = "apple" | "orange"; type Color = "red" | "orange"; type FruitEater = (fruit: Fruit) => number; // eats and ranks the fruit type ColorConsumer = (color: Color) => string; // consumes and describes the colors declare let f: FruitEater | ColorConsumer; f("orange"); // It works! Returns a 'number | string'. f("apple"); // error - Argument of type '"apple"' is not assignable to parameter of type '"orange"'. f("red"); // error - Argument of type '"red"' is not assignable to parameter of type '"orange"'. 


рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.3 рдореЗрдВ, рдирдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкреИрд░рд╛рдореАрдЯрд░ fruit рдФрд░ color рдХреЛ рдПрдХ рд╕рд╛рде рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ Fruit & Color ред Fruit & Color рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ("apple" | "orange") & ("red" | "orange") рд╕рдорд╛рди рд╣реИ рдЬреЛ рдХрд┐ ("apple" & "red") | ("apple" & "orange") | ("orange" & "red") | ("orange" & "orange") рдмрд░рд╛рдмрд░ рд╣реИ ("apple" & "red") | ("apple" & "orange") | ("orange" & "red") | ("orange" & "orange") ("apple" & "red") | ("apple" & "orange") | ("orange" & "red") | ("orange" & "orange") ("apple" & "red") | ("apple" & "orange") | ("orange" & "red") | ("orange" & "orange") ред рдЙрди рдЕрд╕рдВрднрд╡ рдЪреМрд░рд╛рд╣реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рд╖реНрдкрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдо "orange" & "orange" рд╕рд╛рде рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рд╕рд┐рд░реНрдл "orange" ред


рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВред рдпрд╣ рдирдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕рдВрдШ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рдЕрдзрд┐рднрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдВрдШ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ number[] | string[] number[] | string[] map рддрд░рд╣ (рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ) рдЕрднреА рднреА рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред


рджреВрд╕рд░реА рдУрд░, forEach рдЬреИрд╕реЗ рддрд░реАрдХреЗ рдЕрдм forEach рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди noImplicitAny рддрд╣рдд рдХреБрдЫ рдореБрджреНрджреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред


 interface Dog { kind: "pupper" dogProp: any; } interface Cat { kind: "kittyface" catProp: any; } const catOrDogArray: Dog[] | Cat[] = []; catOrDogArray.forEach(animal => { // ~~~~~~ error! // Parameter 'animal' implicitly has an 'any' type. }); 

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

 interface Dog { kind: "pupper" dogProp: any; } interface Cat { kind: "kittyface" catProp: any; } const catOrDogArray: Dog[] | Cat[] = []; catOrDogArray.forEach((animal: Dog | Cat) => { if (animal.kind === "pupper") { animal.dogProp; // ... } else if (animal.kind === "kittyface") { animal.catProp; // ... } }); 

рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдлрд╝рд╛рдЗрд▓ - --build --watch рдореЗрдВ рд╕рдордЧреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рджреЗрдЦ рд░рд╣рд╛ рд╣реИ


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


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


рд╢рд╛рдпрдж рд╡рд┐рдбрдВрдмрдирд╛ рдпрд╣ рд╣реИ рдХрд┐ --build --watch рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдордЧреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЕрдВрдбрд░- --build --watch рдореЛрдб рдХреЗ рддрд╣рдд рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдЕрджреНрдпрддрди рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреВрд░реНрдг рдирд┐рд░реНрдорд╛рдг рдХреЛ рдмрд╛рдзреНрдп рдХрд░реЗрдЧрд╛, рдмрдЬрд╛рдп рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд┐ рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рднреАрддрд░ рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЗрдВ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдИ рдереАрдВред


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


рдЙрджрд╛рддреНрдд рдкрд╛рда рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдкрд╛рджрди


рдкреВрд░реНрд╡ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рдЭреЗрдВрдЧрдмреЛ рд▓реА рдФрд░ рд╕рдореБрджрд╛рдп рдХреЗ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ @idiotWu рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, Sublime рдкрд╛рда рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд▓рдЧрдЗрди рдЕрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдкрд╛рджрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ! рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдкреВрд░реНрдгрддрд╛, рдирд╛рдо, рдЧреЛ-рдЯреВ-рдбреЗрдлрд┐рдирд┐рд╢рди, рдФрд░ рдЕрдзрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде JSDoc рдФрд░ рдЗрдВрдЯрд░рдСрдкрд░реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред


Sublime рдкрд╛рда 3 рдореЗрдВ .js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдкрд╛рджрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?


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


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


рд╣реИрдкреНрдкреА рд╣реИрдХрд┐рдВрдЧ!

- рдбреИрдирд┐рдпрд▓ рд░реЛрд╕реЗрдирд╡реЗрд╕рд░ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо

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


All Articles