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

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

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

рдЖрд░рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ NuGet рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде npm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


npm install -g typescript@rc 

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



рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 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% рдХреА рдХрдореА рдЖрдИ рд╣реИ ред рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдореВрд▓ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдкрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордЧреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬреАрдд рджреЗрдЦреЗрдВрдЧреЗред


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


3.3 рд╕реЗ рдкрд░реЗ, рдЖрдк рдХрд┐рд╕реА рднреА рдЖрдЧрд╛рдореА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд░реЛрдбрдореИрдк рдкреГрд╖реНрда рдкрд░ рдирдЬрд╝рд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред


рд▓реЗрдХрд┐рди рдЕрднреА рд╣рдо рдЖрд░рд╕реА рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрднреА рдПрдХ рд╢реЙрдЯ рджреЗрдВ рдФрд░ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рдмрддрд╛рдПрдВ!


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

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


All Articles