рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

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



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

рдХрд╛рдо рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛


1 рд╡рд┐рдХрд▓реНрдк рд╕рдВрдЦреНрдпрд╛ 1ред рд╡реАрдПрд╕ рдХреЛрдб рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдЧреНрд▓реЛрдмрд▓ рд╡реИрд▓рд┐рдбреЗрд╢рди)


рд╕рд╛рджреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЬреЗрдПрд╕) рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЯреАрдПрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рд╕рднреА рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ VS рдХреЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

"javascript.implicitProjectConfig.checkJs": true

рдпрджрд┐ рдЖрдк рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рд╣реИрдВ рдЬреЛ рдЪрд┐рддреНрд░рдордп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЕрдиреБрд╕рд╛рд░ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЗрдПрд╕ рд╕рддреНрдпрд╛рдкрди рд╕рдХреНрд╖рдо рдХрд░рдирд╛

PtionрдУрдХреНрд╢рди рдирдВрдмрд░ 2ред Jsconfig.json рдлрд╝рд╛рдЗрд▓ (рд╡реИрд╢реНрд╡рд┐рдХ рдорд╛рдиреНрдпрддрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЯреАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЬреЗрдПрд╕ рдХреЛрдб рд╕рддреНрдпрд╛рдкрди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ jsconfig.jsonред рдпрджрд┐ рдРрд╕реА рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ VS рдХреЛрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджреЗрдВрдЧреАред

{
  "compilerOptions": {
    "checkJs": true
  }
}

3 рд╡рд┐рдХрд▓реНрдк рд╕рдВрдЦреНрдпрд╛ 3ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рд╕рдХреНрд╖рдо рдХрд░реЗрдВ


JS рдХреЛрдб рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддреАрд╕рд░рд╛ рддрд░реАрдХрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╝рд╛рдЗрд▓ рд╕реНрддрд░ рдкрд░ рд╕рддреНрдпрд╛рдкрди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ:

// @ts-check
let itsAsEasyAs = 'abc';
itsAsEasyAs = 123; // Error: Type '123' is not assignable to type 'string'

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

// @ts-nocheck
let easy = 'abc';
easy = 123; //  

рдФрд░ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХреЗрд╡рд▓ рднрд╛рдЧ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗ, рддреЛ рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

let easy = 'abc';
// @ts-ignore
easy = 123; //  

JSDoc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдЯрд╛рдЗрдкрд┐рдВрдЧ


рд╣рдордиреЗ рдмрд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдХрд┐ рдлрд╝рд╛рдЗрд▓-рд╕реНрддрд░реАрдп рдЯреАрдПрд╕ рдЬрд╛рдБрдЪ рдХреЛ рдХреИрд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХреНрд╖рдорддрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ JSDoc рдкреНрд░рд╛рд░реВрдк рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдХреЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

тЦН рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреВрд░рд╛ рдХрд░рдирд╛


рдЖрдк рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рдХрд╛рд░реНрдп рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде JSDoc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

/**
 * @param {number} shippingVal
 */
updateShipping(shippingVal) {
    ...
}

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕рдВрдкрд╛рджрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред


рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рдореВрд▓реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рд╕рдВрдХреЗрдд

рдпрд╣ рд╡рд┐рдзрд┐ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдпрд╣ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ@typedefред рдореИрдВ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╡рд░рдг рдбрд╛рд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЗрд╕рд╕реЗ рдХрд╛рд░реНрдп рдХреЗ рджреМрд░рд╛рди рдРрд╕реЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╣реЛрдЧреА:

/**
* @typedef {Object} CreditNoteTaxResponseViewModel
* @property {number} feeAmount
* @property {number} inclGst
* @property {number} subTotal
* @property {number} total
*
* @typedef {Object} ApiResponse
* @property {string} status
* @property {string} message
* @property {CreditNoteTaxResponseViewModel} response
*/

рдРрд╕реЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

/**
                * @param {CreditNoteTaxRequestViewModel} req
                * @returns {Promise<ApiResponse>}
                */
                createCreditNoteTaxApiCall(req) {
        ...
                }

рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╡рд┐рд╢реЗрд╖ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдлрд╛рдЗрд▓ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ main.d.tsред

export interface ICreditNoteTaxRequestViewModel{
    orderID: number;
    shippingCredit: number;
    lines: IICreditNoteTaxLineViewModel[]
}

export interface ICreditNoteTaxLineViewModel{
    originalOrderLineID:number;
    creditQuantity: number;
}

export interface ICreditNoteTaxResponseViewModel{
    feeAmount: number;
    inclGst: number;
    subTotal: number;
    total: number;
}

export interface IApiResponse{
    status: string;
    status: message;
    response: ICreditNoteTaxResponseViewModel;
}

рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

/**
   * @param {import("./main").ICreditNoteTaxRequestViewModel} req
   * @returns {Promise<import("./main").IApiResponse>}
   */
  function createCreditNoteTaxApiCall(req) {
    ///  
    return;
  }

тЦН рдирд┐рдпрдорд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ


рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдмрд┐рд▓реНрдЯ-рдЗрди JSDoc рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдПрдХ рдирд┐рдпрдорд┐рдд рдЪрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ

Of рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдкреВрд░реНрдгреАрдХрд░рдг


рд╡реАрдПрд╕ рдХреЛрдб рдореЗрдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ package.jsonред рд▓реЗрдХрд┐рди, рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЗрд╕рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ jsconfig.json:

{
  "typeAcquisition": {
    "include": ["jquery"]
  }
}

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрд╕реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, JSDoc рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

/**
 * @param {JQuery<HTMLElement>} $itemRow
 */
initRow($itemRow) {
    ...
}

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛


рдпрджрд┐ рдЖрдк рдПрдХ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рднрд╛рдЧреЛрдВ рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рдЖрдк рдмрд╕ рдЗрд╕реЗ рдирд╛рдо рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ jsconfig.jsonрдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tsconfig.jsonрдФрд░ рдЙрд╕ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ allowJs:

{
  "compilerOptions": {
    "allowJs": true,
    "checkJs": true
  }
}

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк *.js-files рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ -files рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ *.tsрдФрд░ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдХреЛрдб рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдзреАрд░реЗ-рдзреАрд░реЗ рд╣реЛ рд╕рдХрддреА рд╣реИред

рд╕рд╛рд░рд╛рдВрд╢


рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рддрджрдиреБрд╕рд╛рд░ рд╡реАрдПрд╕ рдХреЛрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЛрдИ рднреА рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдирд╣реАрдВ рдЙрдард╛рддрд╛ рд╣реИ, рди рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЛ рддрддреНрдХрд╛рд▓ рдПрдХ рдирдИ рднрд╛рд╖рд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

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

рдпрд╣рд╛рдВ GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЗрдПрд╕ рдХреЛрдб рдореЗрдВ рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ?


All Articles