рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдореБрдЭреЗ рдХреИрд╕реЗ рдирд┐рд░рд╛рд╢ рдХрд┐рдпрд╛ рдФрд░ рдХреНрдпрд╛ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ?



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

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

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

рдХреЛрдИ рднреА рд╡рд┐рдХрд╛рд╕ рдЯреАрдо, рдЪрд╛рд╣реЗ рд╡рд╣ рдмрдбрд╝реА рд╣реЛ рдпрд╛ рдЫреЛрдЯреА, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрддреА рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд╣рдореЗрд╢рд╛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ:

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

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рд╕рдм рдХреЗ рдКрдкрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрддрд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдмрд╣реБрдд рдкреАрдЫреЗ рд╣реИред рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХреНрдпреЛрдВред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдирд╣реАрдВ рд╣реИ


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

рдордЬрдмреВрдд рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА


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

рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, рдЖрдк рдХрднреА рднреА рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдЬрд╣рд╛рдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реЛ, рдпрд╛ рддреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдпрд╛ рд░рди рдЯрд╛рдЗрдо рдкрд░ред

рдмреЗрд╢рдХ, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреА рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдЧреНрд░реА рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреА рд╡рд┐рднрд┐рдиреНрди рд╡реНрдпрд╛рдЦреНрдпрд╛рдПрдВ рднреА рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреБрдЫ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдкрдХрдбрд╝рддрд╛ рд╣реИ:

// Type 'string' is not assignable to type 'number' const increment = (i: number): number => { return i + "1"; } // Argument of type '"98765432"' is not assignable to parameter of type 'number'. const countdown: number = increment("98765432"); 

рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА


рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд┐рд▓реНрдХреБрд▓ рдЦреБрд▓реЗ рддреМрд░ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИ рдХрд┐ 100% рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдирд╣реАрдВ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ "рдЧреИрд░-рд▓рдХреНрд╖реНрдп" рд╕реВрдЪреА рдкрд░ "рдЧреИрд░-рд▓рдХреНрд╖реНрдп" рдирдВрдмрд░ 3 рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ:
рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдпрд╛ "рд╕рд╣реА рд░реВрдк рд╕реЗ рд╕рд╣реА" рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╣реЛрдирд╛ рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд╕рдЯреАрдХрддрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмреАрдЪ рд╕рдВрддреБрд▓рди рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

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

 interface A { x: number; } let a: A = {x: 3} let b: {x: number | string} = a; bx = "unsound"; let x: number = ax; // unsound axtoFixed(0); // WTF is it? 

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдХреБрд▓реНрд╣рд╛рдбрд╝реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдП рд╕реЗ рдПрдХ рдирдВрдмрд░ рд╣реИ ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдмрд╛рдж, рдпрд╣ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рдирдЯрд╛рдЗрдо рдкрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрдХрд▓рд┐рдд рд╣реИ:

 axtoFixed(0); 

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

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддреЗ рд╣реБрдП рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рд▓рд╛рдЧрдд рдХрдо рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ рджреЗрдХрд░ рдЪреАрдЬреЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдЪреБрдиреМрддреА рджреЗрддрд╛ рд╣реИред

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдРрд╕рд╛ рд░рд╛рд╕реНрддрд╛ рдХреНрдпреЛрдВ рдЪреБрдирд╛ рд╣реИ рдФрд░ рдПрдХ рд░рд╛рдп рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрддрдиреА рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реЛрдЧреА рдпрджрд┐ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА 100% рдереАред рдпрд╣ рд░рд╛рдп рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЦрдбрд╝реА рдирд╣реАрдВ рд╣реБрдИ - рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рддреЗрдЬреА рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд░рд╣реА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕реНрдкрдВрджрди рдХреЗ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рдеред рдФрд░ рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдбрд╛рд░реНрдЯ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣реИред

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ


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

рдЪреВрдВрдХрд┐ рд╣рдо рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХреБрдЫ рднреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ, рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 const getFullName = async (): string => { const person: AxiosResponse = await api(); //response.name.fullName may result in undefined at runtime return response.name.fullName } 

Io-ts рдЬреИрд╕реЗ рдХреБрдЫ рд╣реЗрд▓реНрдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ, рдЬреЛ рдмрдврд╝рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреА рдирдХрд▓ рдХрд░рдиреА рдкрдбрд╝реЗред

рдбрд░рд╛рд╡рдирд╛ рдкреНрд░рдХрд╛рд░ рдХреЛрдИ рднреА рдФрд░ рд╕рдЦреНрдд рд╡рд┐рдХрд▓реНрдк


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

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

 export class Person { public _id: any; public name: any; public icon: any; 

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЛ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдиреЗ рджреЗрддрд╛ рд╣реИред

рдЖрдк рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рд╕реЗ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

 ("oh my goodness" as any).ToFixed(1); // remember what I said about soundness? 

рд╕рдЦреНрдд рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдХрд▓рдХ рд╡рд┐рдХрд▓реНрдк рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ рд╕рдм рдХреБрдЫ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмрдирд╛рддреЗ рд╣реИрдВ:

  • --strictNullChecks
  • --noImplicitAny
  • --noImplicitThis
  • --alwaysStrict

рдПрдХ eslint @ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдПрд╕рд▓рд┐рдВрдЯ / рдиреЛ-рдХреНрд▓рд┐рдпрд░-рдХреЛрдИ рдирд┐рдпрдо рднреА рд╣реИ ред

рдХрд┐рд╕реА рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рдЖрдкрдХреЗ рдХреЛрдб рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


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

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

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


Vscode рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐

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



рд╣рдорд╛рд░реЗ Instagram рдбреЗрд╡рд▓рдкрд░ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ


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


All Articles