Typescript: "рдордзреНрдпрдо рдЖрдХрд╛рд░" рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдЬреВрди 2015  ┬╖  147рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: microsoft/TypeScript

@nycdotnet рдХреЛ рд╕реБрдирдХрд░ рдореИрдВ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЧрдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж, рд╕реНрдЯреАрд╡ред (рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдЖрдк рдЙрдирдХрд╛ рдЕрдЪреНрдЫрд╛ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: http://www.dotnetrocks.com/default.aspx?showNum=1149)

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

рд╕рдорд╕реНрдпрд╛

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рд╣рд░ рджрд┐рди (#2338 рдФрд░ System.js рдкрд░ рдХрд╛рдо рдХреА рдорджрдж рд╕реЗ) рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рди рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЕрджреНрднреБрдд рд╣реИред рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдзрд╛ рд╣реЛрддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рд╣реИ рдЬреЛ рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  • рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ: tsconfig.json рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЕрдкрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрд░реЛрдд рдХреЛ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦреЗрдВ
  • рдмрдбрд╝реЗ рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ: рдХрд╕реНрдЯрдо рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╡рд╣рд╛рдВ рд╕реНрд░реЛрдд рдбрд╛рд▓реЗрдВ

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

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

  • рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ: tsconfig.json рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЕрдкрдиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрд░реЛрдд рдХреЛ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦреЗрдВ
  • рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ: рдорд╛рдирдХ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕рд╛рдЭрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде
  • рдмрдбрд╝реЗ рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ: рдХрд╕реНрдЯрдо рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╡рд╣рд╛рдВ рд╕реНрд░реЛрдд рдбрд╛рд▓реЗрдВ

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

рдкреНрд░рд╕реНрддрд╛рд╡

рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдХрд┐ рд╣рдо "рдордзреНрдпрдо рдЖрдХрд╛рд░" рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВред рдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдорд╛рдирдХ рдирд┐рд░реНрдорд╛рдг рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдЬ tsconfig.json рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрдИ рдШрдЯрдХреЛрдВ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдпрд╣рд╛рдВ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдХрд╛рдлреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рд╕рдорд░реНрдерди рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реЛрд╕рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓рдХреНрд╖реНрдп

рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рд╕рдВрдХрд▓рди рдФрд░ рдЖрдИрдбреАрдИ рдореЗрдВ рдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП "рдордзреНрдпрдо рдЖрдХрд╛рд░" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдЕрдиреБрднрд╡ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

рдЧреИрд░-рд▓рдХреНрд╖реНрдп

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

рдбрд┐рдЬрд╝рд╛рдЗрди

рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ tsconfig.json рджреВрд╕рд░реЗ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг tsconfig.json рдЖрдЬ рдХрд╛:

{
    "compilerOptions": {
        "module": "commonjs",
        "noImplicitAny": true,
        "sourceMap": true
    },
    "files": [
        "core.ts",
        "sys.ts"
    ]
}

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд tsconfig.json 'рдирд┐рд░реНрднрд░рддрд╛' рдЕрдиреБрднрд╛рдЧ:

{
    "compilerOptions": {
        "module": "commonjs",
        "noImplicitAny": true,
        "sourceMap": true
    },
    "dependencies": [
        "../common", 
        "../util"
    ],
    "files": [
        "core.ts",
        "sys.ts"
    ]
}

рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдпрд╛ рддреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИрдВ:

  • рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛, рдЬрд╣рд╛рдБ рдПрдХ tsconfig.json рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рдПрдХ tsconfig.json рд╕реАрдзреЗ

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

рдпрд╣ рдХрд╛рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ

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

рдЬреИрд╕реЗ рд╣реА рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрднрд░рддрд╛ рдкреВрд░реА рд╣реЛрддреА рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА '.d.ts' рдлрд╝рд╛рдЗрд▓ рд╡рд░реНрддрдорд╛рди рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдИ рдЬрд╛рддреА рд╣реИред рдПрдХ рдмрд╛рд░ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдкреВрд░реА рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ 'рдлрд╛рдЗрд▓' рдЕрдиреБрднрд╛рдЧ рдкреНрд░рджрд╛рди рди рдХрд░рдХреЗ рдЗрд╕рдХреЗ рд╕рдВрдХрд▓рди рдХрд╛ рднреА рддрд╛рддреНрдкрд░реНрдп рд╣реИ, рддреЛ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрдХрд▓рди рд╕реЗ рднреА рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИред

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

рд╕реАрдорд╛рдУрдВ

рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ tsconfig.json рдирд╣реАрдВ рд╣реИ, рдПрдХ рддреНрд░реБрдЯрд┐ рдорд╛рдиреА рдЬрд╛рддреА рд╣реИред

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

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЗ рдореЗрдВ:

рдП - рдмреА
\ рд╕реА

рдП 'рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛' рд╣реИ рдФрд░ рджреЛ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ: рдмреА рдФрд░ рд╕реАред рдпрджрд┐ рдмреА рдФрд░ рд╕реА рд╕реНрд╡рдпрдВ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдорд╛рдорд▓рд╛ рдЫреЛрдЯрд╛ рд╣реИред рдпрджрд┐ C, B рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ B, C рдХреЛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рд╡реГрддреНрддрд╛рдХрд╛рд░ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐, рддрдерд╛рдкрд┐, B, A рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╡реГрддреНрддрд╛рдХрд╛рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред

рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, B, C рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдФрд░ C рд╕реНрд╡-рдирд┐рд╣рд┐рдд рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдЪрдХреНрд░ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрдХрд▓рди рдХреНрд░рдо рд╕реА, рдмреА, рдП рд╣реЛрдЧрд╛, рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ /// рд░реЗрдлрд░реА рдХреЗ рддрд░реНрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред

рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрдиреБрдХреВрд▓рди/рд╕реБрдзрд╛рд░

рдпрджрд┐ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдЪрд░рдг рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд┐рдЫрд▓реЗ рдирд┐рд░реНрдорд╛рдг рд╕реЗ '.d.ts' рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рдВрдХрд▓рди рдиреЗ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдмрдирд╛рдИ рд╣реИрдВ рдЬреЛ рдмрд╛рдж рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА 'рдирд┐рд░реНрднрд░рддрд╛' рд╕реВрдЪреА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА (рдЬреИрд╕рд╛ рдХрд┐ рд╕реАрдорд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реБрдЖ)ред

рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЬрд┐рд╕рдореЗрдВ tsconfig.json рддреНрд░реБрдЯрд┐ рдорд╛рдорд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд╣рдо рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ 'рдлрд╝рд╛рдЗрд▓реЗрдВ' рдФрд░ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЙрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдкрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Committed Monorepos & Cross-Project References Suggestion

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдиреАрдЪреЗ рдбреЙрдХреНрд╕/рдмреНрд▓реЙрдЧрдкреЛрд╕реНрдЯ рдХрд╛ рдХрд╛рд░реНрдп рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ (рдлрд╝реАрдбрдмреИрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗ)

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


рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.0 рдореЗрдВ рдПрдХ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ, рдЖрдк рдмрд┐рд▓реНрдб рд╕рдордп рдореЗрдВ рдмрд╣реБрдд рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рддрд╛рд░реНрдХрд┐рдХ рдЕрд▓рдЧрд╛рд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдирдП рдФрд░ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо tsc , --build рдзреНрд╡рдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореЛрдб рднреА рдкреЗрд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рддреЗрдЬреА рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд┐рд▓реНрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде рд╣рд╛рде рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛

рдЖрдЗрдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреИрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн рд╣рдореЗрдВ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, converter рдФрд░ units , рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓:

/src/converter.ts
/src/units.ts
/test/converter-tests.ts
/test/units-tests.ts
/tsconfig.json

рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддреА рд╣реИрдВ рдФрд░ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреА рд╣реИрдВ:

// converter-tests.ts
import * as converter from "../converter";

assert.areEqual(converter.celsiusToFahrenheit(0), 32);

рдкрд╣рд▓реЗ, рдпрджрд┐ рдЖрдк рдПрдХ tsconfig рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рдереА:

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

рдЖрдк рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ tsconfig рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирдП рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ:

  • рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрдк-рдЯреВ-рдбреЗрдЯ рдЬрд╛рдБрдЪ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╣рдореЗрд╢рд╛ tsc рджреЛ рдмрд╛рд░ рдЪрд▓рддреЗ рд╣реИрдВ
  • tsc рджреЛ рдмрд╛рд░ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдЕрдзрд┐рдХ рд▓рдЧрддрд╛ рд╣реИ
  • tsc -w рдПрдХ рд╕рд╛рде рдХрдИ рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддрд╛

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн рдЗрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн рдХреНрдпрд╛ рд╣реИ?

tsconfig.json рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдХ рдирдИ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд╕рдВрдкрддреНрддрд┐ рд╣реИ, references ред рдпрд╣ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ рдЬреЛ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИ:

{
    "compilerOptions": {
        // The usual
    },
    "references": [
        { "path": "../src" }
    ]
}

рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджрд░реНрдн рдХреА path рд╕рдВрдкрддреНрддрд┐ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ tsconfig.json рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдпрд╛ рд╕реНрд╡рдпрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ (рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рднреА рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред

рдЬрдм рдЖрдк рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдирдИ рдЪреАрдЬрд╝реЗрдВ рд╣реЛрддреА рд╣реИрдВ:

  • рдХрд┐рд╕реА рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХреА рдЖрдЙрдЯрдкреБрдЯ рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ ( .d.ts ) рд▓реЛрдб рд╣реЛрдЧреА
  • рдпрджрд┐ рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ outFile рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ .d.ts рдлрд╝рд╛рдЗрд▓ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА
  • рдмрд┐рд▓реНрдб рдореЛрдб (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛

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

composite

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

  • rootDir рд╕реЗрдЯрд┐рдВрдЧ, рдпрджрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ tsconfig рдлрд╝рд╛рдЗрд▓ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ
  • рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди include рдкреИрдЯрд░реНрди рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ files рд╕рд░рдгреА рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЗрд╕ рдмрд╛рдзрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ tsc рдЖрдкрдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреМрди-рд╕реА рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХреА рдЧрдИ рдереАрдВ
  • declaration рдЪрд╛рд▓реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

declarationMaps

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

prepend рд╕рд╛рде outFile

рдЖрдк рд╕рдВрджрд░реНрдн рдореЗрдВ prepend рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкреНрд░реАрдкреЗрдиреНрдб рдХрд░рдирд╛ рднреА рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

   "references": [
       { "path": "../utils", "prepend": true }
   ]

рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдКрдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред
рдпрд╣ .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рднреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрдВрдЧреАред

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

  ^ ^ 
 /   \
B     C
 ^   ^
  \ /
   D

рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝реЗрдВ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХреА рджреЛ рдкреНрд░рддрд┐рдпрд╛рдВ рд╕рд╛рде рдЦрддреНрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛ A рдХреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ D - рдЗрд╕ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдХреБрдЫ рдЯреНрд░реЗрдб-рдСрдл рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдЕрд╡рдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдореМрдЬреВрджрд╛ рдмрд┐рд▓реНрдб рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, tsc рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ --build рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП --build рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдиреЗрдВред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдореЛрдб

рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдорд╛рд░реНрдЯ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдмрд┐рд▓реНрдб рд╣реИред
3.0 рдореЗрдВ рдЖрдк --build рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ tsc ред
рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ tsc рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИ рдЬреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд┐рд▓реНрдб рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред

tsc --build ( tsc -b рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ) рдЪрд▓рд╛рдирд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛:

  • рд╕рднреА рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрдЬреЗрдВ
  • рдкрддрд╛ рд▓рдЧрд╛рдПрдБ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЕрдк-рдЯреВ-рдбреЗрдЯ рд╣реИрдВ
  • рдкреБрд░рд╛рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдмрдирд╛рдПрдВ

рдЖрдк tsc -b рдПрдХрд╛рдзрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдкрде (рдЙрджрд╛рд╣рд░рдг tsc -b src test ) рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
tsc -p , рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕реНрд╡рдпрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ рдпрджрд┐ рдЗрд╕рдХрд╛ рдирд╛рдо tsconfig.json ред

tsc -b рдХрдорд╛рдВрдбрд▓рд╛рдЗрди

рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 > tsc -b                                # Build the tsconfig.json in the current directory
 > tsc -b src                            # Build src/tsconfig.json
 > tsc -b foo/release.tsconfig.json bar  # Build foo/release.tsconfig.json and bar/tsconfig.json

рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рдкрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ - tsc рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдСрд░реНрдбрд░ рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ рдмрдиреА рд░рд╣реЗред

tsc -b рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреБрдЫ рдЭрдВрдбреЗ рднреА рд╣реИрдВ:

  • --verbose : рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдмреЛрдЬрд╝ рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ (рдХрд┐рд╕реА рдЕрдиреНрдп рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
  • --dry : рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ
  • --clean : рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ ( --dry рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
  • --force : рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВ рдЬреИрд╕реЗ рдХрд┐ рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреБрд░рд╛рдиреЗ рд╣реИрдВ
  • --watch : рд╡реЙрдЪ рдореЛрдб ( --verbose рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд┐рд╕реА рднреА рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)

рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ

рдЖрдо рддреМрд░ рдкрд░, tsc рд╕рд┐рдВрдЯреИрдХреНрд╕ рдпрд╛ рдЯрд╛рдЗрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ ( .js рдФрд░ .d.ts ) рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ noEmitOnError рдЪрд╛рд▓реВ рди рд╣реЛред
рдПрдХ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реЛрдЧрд╛ - рдпрджрд┐ рдЖрдкрдХреА рдкреБрд░рд╛рдиреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдХреЛрдИ рдирдИ рддреНрд░реБрдЯрд┐ рдереА, рддреЛ рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рджреЗрдЦреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдж рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЕрдм рдЕрдк-рдЯреВ-рдбреЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЫреЛрдбрд╝ рджреЗрдЧрд╛ред
рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, tsc -b рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП noEmitOnError рд╕рдХреНрд╖рдо рд╣реИред

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ ( .js , .d.ts , .d.ts.map , рдЖрджрд┐) рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреБрдЫ рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдмрд╛рдж --force рдмрд┐рд▓реНрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рд╕рдВрдЪрд╛рд▓рди рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рдЙрдкрдХрд░рдг рд╕реНрдерд╛рдиреАрдп рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдФрд░ рджреВрд░рд╕реНрде рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рдмреАрдЪ рдЯрд╛рдЗрдорд╕реНрдЯрдореИрдк рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдПрдордПрд╕рдмрд┐рд▓реНрдб

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдПрдордПрд╕рдмрд┐рд▓реНрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, рддреЛ рдЖрдк рдЬреЛрдбрд╝рдХрд░ рд╕рдХреНрд╖рдо рдмрд┐рд▓реНрдб рдореЛрдб рдЪрд╛рд▓реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

    <TypeScriptBuildMode>true</TypeScriptBuildMode>

рдЖрдкрдХреА рдкреНрд░реЛрдЬ рдлрд╝рд╛рдЗрд▓ рдореЗрдВред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдлрд╛рдИ рдХреЛ рднреА рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ tsconfig.json / -p , рдореМрдЬреВрджрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЖрдкрдХреА tsconfig рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреБрдЫ рдЯреАрдореЛрдВ рдиреЗ рдПрдордПрд╕рдмрд┐рд▓реНрдб-рдЖрдзрд╛рд░рд┐рдд рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рд╕реЗрдЯ рдЕрдк рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ tsconfig рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЧреНрд░рд╛рдлрд╝ рдСрд░реНрдбрд░рд┐рдВрдЧ рд╣реИ рдЬреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдРрд╕рд╛ рд╣реИ, рддреЛ рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде msbuild рд╕рд╛рде tsc -p рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ; рдпреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд▓ рд╣реИрдВред

рджрд┐рд╢рд╛ рдирд┐рд░реНрджреЗрд╢

рд╕рдордЧреНрд░ рд╕рдВрд░рдЪрдирд╛

рдЕрдзрд┐рдХ tsconfig.json рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде, рдЖрдк рдЖрдорддреМрд░ рдкрд░ рдЕрдкрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
рдЗрд╕ рддрд░рд╣ рдЖрдк рдПрдХрд╛рдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдФрд░ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдПрдХ "рд╕рдорд╛рдзрд╛рди" tsconfig.json рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреА рд╕рднреА рд▓реАрдл-рдиреЛрдб рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╕ references рд╣реИред
рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реЗрдкреЛ рдореЗрдВ рд╣рдо рд╕рднреА рдПрдВрдбрдкреЙрдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ tsc -b src рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕рднреА рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ src/tsconfig.json рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ 3.0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ tsconfig.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ reference рд╣реИ, рддреЛ рдЕрдм рдЦрд╛рд▓реА files рд╕рд░рдгреА рд╣реЛрдиреЗ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред

рдЖрдк рдЗрди рдкреИрдЯрд░реНрди рдХреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реЗрдкреЛ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - src/tsconfig_base.json , src/tsconfig.json , рдФрд░ src/tsc/tsconfig.json рдкреНрд░рдореБрдЦ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВред

рд╕рд╛рдкреЗрдХреНрд╖ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛

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

рдЖрдЙрдЯрдлрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛

outFile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рд▓реЗрдЖрдЙрдЯ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдЙрддрдирд╛ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред
рдзреНрдпрд╛рди рд░рдЦрдиреЗ рд╡рд╛рд▓реА рдПрдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЖрдо рддреМрд░ рдкрд░ "рдЕрдВрддрд┐рдо" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рддрдХ prepend рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ - рдЗрд╕рд╕реЗ рдмрд┐рд▓реНрдб рд╕рдордп рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ рдФрд░ рдХрд┐рд╕реА рднреА рдмрд┐рд▓реНрдб рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ I/O рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧреАред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реЗрдкреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрджрд░реНрдн рд╣реИ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ "рд▓рд╛рдЗрдмреНрд░реЗрд░реА" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдХреБрдЫ "рдПрдВрдбрдкреЙрдЗрдВрдЯ" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИрдВ; "рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ" рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЫреЛрдЯрд╛ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЙрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

monorepos . рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛

TODO: рдЕрдзрд┐рдХ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд╢ рдФрд░ рд▓рд░реНрди рдХреЗ рдкрд╛рд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбрд▓ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЕрдВрдд рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ

рд╕рднреА 147 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣реЗ рднрдЧрд╡рд╛рди!

:+1:

рд╣рд╛рдВ! рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЯреВрд▓ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдХреИрд╕реЗ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рдХрд╛рдо рд╣реИред рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЧрд▓рддреА рд╕реЗ .d.ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ F12 рдХрд░рддрд╛ рд╣реВрдБ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рдмрдЪреНрдЪреЗ рдХрд╛ рдЧрд▓рд╛ рдШреЛрдВрдЯ рд░рд╣рд╛ рд╣реВрдБ!

рдЬреЛрдирд╛рдерди,

рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕реЗ рд▓реЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдРрд╕рд╛ рдорд╣рд╛рди рдЙрдкрдХрд░рдг рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧреА рдЬреЛ рдЕрдкрдиреЗ рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреЗ рдХреЛрдбрдмреЗрд╕ рдХреЛ рдШрдЯрдХ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЕрдХреНрд╖рдорддрд╛ рдХреЛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рдард╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рд╕рдЦреНрдд рд╡рд┐рднрд╛рдЬрди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдЬрд╝реВрд░ рдкреЛрд░реНрдЯрд▓реНрд╕ рдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЛрдирд╛рдХреЛрд╕ рдХрд╛ рджреБрдирд┐рдпрд╛> 100kloc рдФрд░ рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдЯреАрдореЛрдВ рдХреЗ рд╕рд╛рде)ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдирд┐рдпрдорд┐рдд рд▓реЛрдЧреЛрдВ" рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред рд╕рд╛рде рд╣реА, рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП @NoelAbrahams (#2180), рдФрд░ рдЕрдиреНрдп рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдВ рдореМрд▓рд┐рдХрддрд╛ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЙрддреНрдХреГрд╖реНрдЯ рд╣реИред рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ (#3394) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрдореА рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрдм рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рд╣реИ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдлреЙрд▓рдмреИрдХ рддрдВрддреНрд░ рдХреА рдХрдореАред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддреГрдд рдХрд┐рдпрд╛ рд╣реИ: https://github.com/Microsoft/TypeScript/issues/3394#issuecomment -109359701

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

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

"dependencies": {
   "csproj2ts": ["../csproj2ts","node_modules/csproj2ts/csproj2ts.d.ts"],
   "SomeRequiredLibrary": "../SomeRequiredLibraryWithNoFallback"
}

рдЗрд╕реЗ рдЕрднреА рднреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЧреНрд░рдВрдЯ-рдЯреАрдПрд╕ tsconfig.json рдлрд╝рд╛рдЗрд▓ рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд╛рд▓реНрдкрдирд┐рдХ dependencies рдЕрдиреБрднрд╛рдЧ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ:

"dependencies": [
   ["../csproj2ts","node_modules/csproj2ts/csproj2ts.d.ts"],
   "../SomeRequiredLibraryWithNoFallback"
]

dependencies рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рд░рдгреА-рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдирд┐рдпрдо рд╣реЛрдЧрд╛: _first_ рдЖрдЗрдЯрдо рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдЯреНрд░рд┐рдВрдЧ-рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдирд╛рдерди рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реА рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓-рд╕реЗ-рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдорд╛рдзрд╛рди рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдбреЗрд╡рд▓рдкрд░ (рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХреЛрдВ) рдХреЛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рджреЗрддрд╛ рд╣реИред рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ csproj2ts рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдФрд░ рдЗрд╕рд▓рд┐рдП ../csproj2ts/tsconfig.json рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ), рдирд┐рд░реНрднрд░рддрд╛ рдХреЗрд╡рд▓ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рд╣реЛрдЧреА рдЬреЛ рд╕рдВрдХрд▓рди рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬреБрдбрд╝ рдЬрд╛рддреА рд╣реИред рдЬрд┐рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ _do_ рдХреЗ рдкрд╛рд╕ ../csproj2ts/tsconfig.json рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЙрдирдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡ рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдКрдкрд░ рдмрддрд╛рдпрд╛ рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдкрдХреЗ рдореМрдЬреВрджрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреА рддрд░рд╣ рд╣реА "../SomeRequiredLibraryWithNoFallback" рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдЗрд╕рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред

рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

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

рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ tsconfig рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдирд┐рдореНрди рдХреЗ рд╡реНрдпрд╡рд╕рд╛рдпреЛрдВ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

  • рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛
  • рдЕрдк-рдЯреВ-рдбреЗрдЯ рдЬрд╛рдВрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦрд░
  • рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди (рд░рд┐рд▓реАрдЬрд╝ рдмрдирд╛рдо рдбреАрдмрдЧ)

рдпреЗ рд╕рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реИрдВ; рдпреЗ рдХрдард┐рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реЗ рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬреЛ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдПрдордПрд╕рдмрд┐рд▓реНрдб, рдЧреНрд░рдВрдЯ, рдЧрд▓реНрдк рдЗрддреНрдпрд╛рджрд┐ред
рдПрдХ рдмрд╛рд░ рдЬрдм tsconfig рдФрд░ tsc рдмрд┐рд▓реНрдб рдбреНрд░рд╛рдЗрд╡рд░ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рднреА CPU рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕рдВрдмрдВрдзрд┐рдд рдЙрдкрдЯреНрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗ, рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдФрд░ рдкреНрд░реА рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рд╣реЛ, рдФрд░ рд╕рдВрднрд╡рддрдГ рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рднреА рдмрдирд╛ рд╕рдХреЗред рдлрд┐рд░ рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рдРрд╕реЗ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬреЛ рд╡реЗ рдЬреЛ рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕рдореЗрдВ рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП,
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрдИ tsconfig рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рдареАрдХ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдФрд░ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЖрдкрдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рдорд╛рдиреВрдВрдЧрд╛:

"files" : [
    "file1.ts",
    {
        "path": "../projectB/out/projectB.d.ts",
         "sourceProject": "../projectB/"
     }
]

рдЬрд╣рд╛рдВ tsc рдХреЗрд╡рд▓ "рдкрде" рдХреЛ рджреЗрдЦреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЙрдкрдХрд░рдг рдЕрдиреНрдп рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд╣рд╛рдпрдХ рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪрддрд╛ рдХрд┐ рд▓рдВрдкрд┐рдВрдЧ рдмрд┐рд▓реНрдб рдФрд░ рдЯреВрд▓рд┐рдВрдЧ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реИред tsconfig.json рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмреИрдЧ (рдпрд╛рдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ json рд╡рд┐рдХрд▓реНрдк) рдмрдирд╛ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдирд╣реАрдВ рдмрдирдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ tsconfig.json рдПрдХрд▓ tsc рдЖрдордВрддреНрд░рдг рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред tsc рд╕рд┐рдВрдЧрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореЛрд╣рдореНрдорджред рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рджреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ:

  • рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд▓реНрдЯреА-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдб рдХреЗ рд╕рдордиреНрд╡рдп рдХрд╛ рдХрд╛рд░реНрдп рд╕рдорд░реНрдкрд┐рдд рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдХрд╛ рдбреЛрдореЗрди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдореЗрдВ рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ tsc --project рдкрд░ tsconfig.json рдЪрд▓рд╛рдирд╛ tsc file1.ts ../project/out/project.d.ts рдЪрд▓рд╛рдиреЗ рдЬреИрд╕рд╛ рд╣реА рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реАрдПрд╕ рдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓рдиреЗ рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ _рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓_ рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдЬрд╛рдиреЗ" рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рдЬрд╛рдПрдЧреА рдЬрд╣рд╛рдВ рд╕реБрд╡рд┐рдзрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЧрдИ рдереА ( projectB.d.ts рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдмрдЬрд╛рдп)

рдХреНрдпрд╛ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╣ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ?

рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╣реА рдЙрдЪрд┐рдд рд╣реИред рдореЗрд░реЗ рдореВрд▓ рдкреНрд░рд╕реНрддрд╛рд╡ (https://github.com/Microsoft/TypeScript/issues/3394) рдореЗрдВ, рдореИрдВрдиреЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдЕрдзреВрд░рд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХрд╛ рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдерд╛ рдЬрд╣рд╛рдВ рд╕реЗ рд╡реЗ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдВрдЧреЗ рд╕рдВрджрд░реНрднрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЬрд╣рд╛рдВ рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдиреНрд╣реЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЙрдореНрдореАрдж рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ "рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рдбрд╝рдХ рдХреЗ рдЖрдзреЗ рд░рд╛рд╕реНрддреЗ рдиреАрдЪреЗ рдХреНрдпреЛрдВ рдЬрд╛рдПрдВ рдЬрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ"ред

рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реЛрдВрдЧреЗ?

"files" : [
    "file1.ts",
    {
        "path": "externalLibraries/projectB.d.ts",
         "sourceProject": "../projectB/"
     }
]

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

@nycdotnet рдЖрдкрдиреЗ рдЗрд╕реЗ рд╕рд╣реА рдмрддрд╛рдпрд╛; рдореИрдВ рдПрдХ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╢рд┐рдерд┐рд▓ рд░реВрдк рд╕реЗ рдпреБрдЧреНрдорд┐рдд рд╣реЛ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ IDE рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдФрд░ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдПрдХ рдмреЗрд╣рддрд░реАрди рдбрд┐рдЬрд╝рд╛рдЗрди рд╕рдордп рдХрд╛ рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ!

рдореИрдВ @mhegazy рд╕реЗ рд╕рд╣рдордд

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

@nycdotnet рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХрд╛рдзрд┐рдХ рдлрд╝реЙрд▓рдмреИрдХ рдкрдереЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ npm link ../csproj2ts рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛?

рдореИрдВ @mhegazy рд╕реЗ рд╕рд╣рдордд

"рдлрд╛рдЗрд▓реЗрдВ" : [
{
"рдкрде": "externalLibraries/projectB.d.ts",
"рд╕реЛрд░реНрд╕рдкреНрд░реЛрдЬреЗрдХреНрдЯ": "../рдкреНрд░реЛрдЬреЗрдХреНрдЯрдмреА/"
}
]

tsconfig.json рдлрд╝рд╛рдЗрд▓ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрднреА рднреА рд╕рднреА ts рдлрд╝рд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреАред

@dbaeumer рдлрд┐рд░ рдЖрдк рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣реИ рдирд╛? рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдпрджрд┐ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдо рд╢рд╛рдорд┐рд▓ *.ts рднрд╛рдЧ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрддреЗ рд╣реИрдВред

@mhegazy рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдПрдХ рдЕрд▓рдЧ рдЦрдВрдб рд╣реЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдВрдд рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛ред рдЕрдЧрд░ рдореИрдВ tsconfig -> tsconfig рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореИрдВ рдЕрднреА рднреА рдХрд┐рд╕реА *.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдлреАрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

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

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

рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди, рдЬреЛ рдЖрдЬ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ .d.ts рд╣реИ, рдФрд░ рдлрд┐рд░ рджреВрд╕рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИред рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

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

рдирд╛рдо рдмрджрд▓рдиреЗ рдЬреИрд╕реЗ рд╕рдВрдЪрд╛рд▓рди, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рджреВрд╕рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ "рдкреНрд░рдЪрд╛рд░" рдХрд░реЗрдВрдЧреЗ, рдЗрд╕реА рддрд░рд╣ рд╕рдВрджрд░реНрдн рдвреВрдВрдвреЗрдВрдЧреЗ, рдХрд░реЗрдВрдЧреЗред

рдЖрдЬ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ tsconfig.json рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрд╕реНрдЯ (рдЖрдИрдбреАрдИ, рдЬреЛ рдХреБрдЫ рднреА) рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЯреАрдПрд╕ рдлрд┐рд░ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рдХрд╛рд░реНрдп рдХреА рдХрд▓реНрдкрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ рдпрджрд┐ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдлреИрд╢рди рдореЗрдВ рдХрдИ tsconfig.json рд╕реНрдерд┐рдд рд╣реЛрдВ? рдХреНрдпрд╛ рд╣реЛрд╕реНрдЯ рдЕрднреА рднреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдирд╣реАрдВ рдпрд╛ рд╣реЛрд╕реНрдЯ рд╕рднреА tsconfigs рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реБрд╡рд┐рдзрд╛/рд╕рдореНрдореЗрд▓рди рдФрд░ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдордЭреМрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ #2568 (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд) рдореЗрдВ рд╡рд░реНрдгрд┐рдд d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧрд╛?

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

@mhegazy рдУрд╣, рдХреНрд╖рдорд╛ рдХрд░реЗрдВред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдиреЗ рдкрд░ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдврд╝рд╛:

  • рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ: рдорд╛рдирдХ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕рд╛рдЭрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде

рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдирдкреАрдПрдо/рдмреНрд░рд╛рдЙрдЬрд╝рд░рд╛рдЗрдЬрд╝ (рдпрд╛ рд╡реЗрдмрдкреИрдХ) рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдорд░реНрдерди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рд╣реИрдВред

AFAIK рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ .d.ts рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдПрдХ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ tsconfig.json рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рд╣реЛрдирд╛ рд╣реЛрдЧрд╛:

{ 
  "provides": "external-module-name"
}

рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп tsconfig.json рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ LS рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛

AFAIK рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ .d.ts рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ?

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рдЪ рд╣реИред tsc --m --d рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдлрд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯ рд╣реЛрдЧреА рдЬреЛ рдПрдХ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рд╣реИред рд╕рдВрдХрд▓реНрдк рддрд░реНрдХ рдПрдХ .ts рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ рдФрд░ рдпрджрд┐ рдирд╣реАрдВ рддреЛ рдЙрд╕реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ .d.ts,

@spion рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП d.ts рдлрд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ @mhegazy рдиреЗ рдХрд╣рд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ 1:1 рдЕрдиреБрдкрд╛рдд рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЖрдо рддреМрд░ рдкрд░ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдЯреНрд░рд╛рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ: https://github.com/TypeStrong/dts-bundle

@mhegazy рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореЗрд░рд╛ рдорддрд▓рдм "рдкрд░рд┐рд╡реЗрд╢ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓" рдХреЗ рд▓рд┐рдП рдерд╛, рдпрд╛рдиреА рдЕрдЧрд░ рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ external-module-name рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХреА рдПрдХ рдХрдХреНрд╖рд╛ рдХреЛ рджреВрд╕рд░реЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ:

import {MyClass} from 'external-module-name'

рд╡рд╣рд╛рдБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ tsc рдЙрдЪрд┐рдд .d.ts рдлрд╝рд╛рдЗрд▓ рдХрд┐ рд╡рд╛рдгреА рдЙрддреНрдкрдиреНрди 'external-module-name'

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

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЖрдк рдЙрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ "requirejs" рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рд╕реНрд░реЛрдд рд╣реИ?

@llgcode рдХреГрдкрдпрд╛ https://github.com/Microsoft/TypeScript/issues/5039 рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдпрд╣ typescript@next рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдЙрдк-рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЧрд▓реНрдкрдлрд╛рдЗрд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрддрдирд╛ рдХрдард┐рди рдХреНрдпрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреИрд╕реЗ рд╣реЛрддреА рд╣реИред рдореИрдВ рдЗрд╕реЗ рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рднреА рдХрд░рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ tsconfig.json рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг рд╡реАрдПрд╕ рдХреЛрдб рд╣реИ

рдкрд╣рд▓реЗ рдореИрдВ рдЧрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ред рджреВрд╕рд░рд╛ рдпрд╣ рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рд╣рд░ рдмрд╛рд░ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЧрд▓реНрдк рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░реЗрдВред

@llgcode рдареАрдХ рд╣реИ, рдЧрд▓реНрдк рдПрдХ рдХрд╛рд░реНрдп рдзрд╛рд╡рдХ рд╣реИред рдЖрдк рдПрдХ gulpfile.js рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдЖрдк gulp.task() рд╕рд╛рде рдЬрд┐рддрдиреЗ рдЪрд╛рд╣реЗрдВ рдЙрддрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЗ рдЕрдВрджрд░, рдЖрдк gulp.src() рд╕рд╛рде рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдзрд╛рд░рд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ .pipe() рдЙрдиреНрд╣реЗрдВ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреА рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд╕рдВрдХрд▓рди, рд╕рдВрдпреЛрдЬрди, рдЦрдирди, рд╕реНрд░реЛрддрдореИрдк, рд╕рдВрдкрддреНрддрд┐ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ ... рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреБрдЫ рднреА рдХрд░реЗрдВ рдЬреЛ рдиреЛрдб рдФрд░ рдПрдирдкреАрдПрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реЛред
рдпрджрд┐ рдЖрдкрдХреЛ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реИ, рддреЛ рдмрд╕ рдЙрд╕ рдХрд╛рд░реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬреЛ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХрд╛рдзрд┐рдХ tsconfig.json рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЧрд▓реНрдк-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ, рдпрд╛ рдЖрдк рдХреЗрд╡рд▓ рдЬреЗрд╕рди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдирд┐рд░реНрдорд╛рдг рднреА рд╕рдВрднрд╡ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреИрд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реИ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реЗрдкреЛ рдореЗрдВ рд╣реИ рдФрд░ рд╕рдмрдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╛ рдЬреЛ рднреА рд╣реЛред рд▓реЗрдХрд┐рди рдЧрд▓реНрдк 100% рд▓рдЪреАрд▓рд╛ рд╣реИред

рдареАрдХ рд╣реИ рдзрдиреНрдпрд╡рд╛рдж рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдкрдХрд░рдг рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдЕрдЧрд░ рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ ("mylibs/lib") рдЬреИрд╕реЗ рдореИрдкрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдореЗрд░реА рдлрд╛рдЗрд▓реЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ/src/lib.js рдореЗрдВ рд╣реИрдВ рддреЛ рдкреВрд░реНрдгрддрд╛ рдкрд░рдорд╛рдгреБ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреА рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдЧрд▓реНрдк рдХреИрд╕реЗ рд╣рд▓ рд╣реЛрдЧрд╛ рдореИрдкрд┐рдВрдЧ/рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди "mylibs" рдФрд░ рд╕реНрдерд╛рдиреАрдп рдкрде рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ #5039 рдореЗрдВ рдпрд╣ рдирдпрд╛ рд╡рд┐рдХрд▓реНрдк рдкрде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

@llgcode рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЧрд▓реНрдк рдХреЗ рд╕рд╛рде рдЖрдк рдЧреНрд▓реЛрдм рдХреЗ рд╕рд╛рде рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ (.d.ts рдлрд╛рдЗрд▓реЛрдВ рд╕рд╣рд┐рдд) рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рджреЗрдЦреЗрдВ https://www.npmjs.com/package/gulp-typescript#resolving -filesред

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

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

@llgcode рд╕реЗ рд╕рд╣рдордд рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕рдкреЛрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЙрдЬрд╛рдЧрд░ рд╣реЛрддреА рд╣реИ, рдЬреЛ IDE рдХреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ) рдФрд░ рдкреВрд░реНрдгрддрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдФрд░ рдЙрд╕реЗ рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдкреЗрдбрд╝ рдкрд░ рдЪрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

@llgcode @unional рдорд╛рдиреНрдп рдЕрдВрдХред рдПрдХ рдмрд╛рдд рдпрд╣ рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП files tsconfig.json globs рд╕реНрд╡реАрдХрд╛рд░ рддрд╛рдХрд┐ рдЖрдк рд╕рднреА рдлрд╝реЛрд▓реНрдбрд░ рдЖрдк рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдореЗрдВ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ред рд▓реЗрдХрд┐рди рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХрд╣рд╛рдВ рд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ tsconfig.json рдХреНрдпреЛрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдХреЙрдордирдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП AFAIK рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА node_modules рдФрд░ npm link ../path/to/other-project рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИ

рдЬреИрд╕реЗ рд╣реА рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдПрдирдкреАрдПрдо рд▓рд┐рдВрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдЦреБрдж рдХреА рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ rxjs рд▓реЗрддреЗ рд╣реБрдП) рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЛ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ 'рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ'ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╢рд╛рдорд┐рд▓ рдкрде рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рд╕рд┐рдорд▓рд┐рдВрдХ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрджред рд╕рдорд╛рдзрд╛рди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЧрд▓реНрдк рдХрд╛рд░реНрдп рдпрд╛ рд╕реНрдерд╛рдиреАрдп/рдирд┐рдЬреА npm рд░реЗрдкреЛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд╛рдкрд╕ред

@EricABC рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╡реЗ рдкрд░рд┐рд╡реЗрд╢реА рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдирдИ рд╕рдорд░реНрдерд┐рдд node_modules рдЖрдзрд╛рд░рд┐рдд .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЯреАрдПрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗрд╡рд▓ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╡реЗ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЖрддреЗ рд╣реИрдВ рдпрд╛ рдЬрдм рддрдХ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдореЗрд▓ рдЦрд╛рддреА рд╣реИрдВ рддрдм рддрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╛рдо рд╣реЛрддреЗ рд╣реИрдВред

рдзрдиреНрдпрд╡рд╛рдж @spion , рдмрд╕ рдорд╛рди рд▓рд┐рдпрд╛ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓-рдЖрдзрд╛рд░рд┐рдд рдерд╛, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореБрдЭреЗ рдХреБрдЫ рдЖрддреНрдо-рдкреАрдбрд╝рд┐рдд рджрд░реНрдж рд╕реЗ рдмрдЪрд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред

рдПрдХ рдЪреАрдЬ рдЬреЛ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИ рд╡рд╣ рд╣реИ tsconfig.json рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЧреНрд▓реЛрдмреНрд╕ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ ...

рдЪрд░реНрдЪрд╛ рдореЗрдВ include рд╕рдВрдкрддреНрддрд┐ рд╣реИ

рдкреНрд░рд╢реНрди рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:

  • dependencies рдХреЛ рдкреВрд░реНрдг tsconfig.json рдкрде рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ tsc рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
  • рдЬрдм files рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдареАрдХ рд╣реИ рддреЛ рдПрдХ рдирдпрд╛ рдХреАрд╡рд░реНрдб ( dependencies ) рдХреНрдпреЛрдВ рдкреЗрд╢ рдХрд░реЗрдВ?
    рдЙрджрд╛рд╣рд░рдг:
{
    "compilerOptions": {
        // ...
    },
    "files": [
        "../common/tsconfig.json", // <== takes the `files` part of the tsconfig.json
        "../common/tsconfig.util.json", // <==
        "core.ts",
        "sys.ts"
    ]
}
  • рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдирд┐рд░реНрднрд░рддрд╛ tsconfig.json рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИ compilerOptions ?


рдЖрдЗрдП рдЖрдЧреЗ рдЪрд▓рддреЗ рд╣реИрдВ/рдЬрдВрдЧрд▓реА :-) рдФрд░ рд╕рдВрднрд╡рддрдГ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ) compilerOptions , exclude ... рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп tsconfig.json рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ:

// File app/tsconfig.json
{
    "compilerOptions": "../common/tsconfig.compilerOptions.json",
    "files": [
        "../common/tsconfig.json",
        "../common/tsconfig.util.json",
        "core.ts",
        "sys.ts"
    ],
    "exclude": "../common/exclude.json"
}

// File ../common/tsconfig.compilerOptions.json
{
    "compilerOptions": {
        "module": "commonjs",
        "noImplicitAny": true,
        "sourceMap": true
    }
}

// File ../common/exclude.json
{
    "exclude": [
        "node_modules",
        "wwwroot"
    ]
}

// File ../common/tsconfig.util.json
{
    "files": [
        "foo.ts",
        "bar.ts"
    ]
}

рдЖрдкрдХреЛ рддрд░реНрдХ рдорд┐рд▓рд╛: files , compilerOptions , exclude ... рдЕрдиреНрдп tsconfig.json рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдЕрдиреНрдп tsconfig рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреАрд╡рд░реНрдб рднрд╛рдЧ рдХреЛ "рд▓реЗ" рдЬрд╛рдПрдЧрд╛ .json рдлрд╝рд╛рдЗрд▓ => рдЖрд╕рд╛рди рдФрд░ рдорд╛рдкрдиреАрдпред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ tsconfig.json рдХреЛ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдкрдХреА рдЪрд░реНрдЪрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкрдврд╝рдирд╛, рдпрд╣ "рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛"/рдЧреЛрдЯреЛ рдкрд░рд┐рднрд╛рд╖рд╛ рдЪреАрдЬрд╝ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд┐рдмрдЧрд░реНрд╕ рд╕реЛрд░реНрд╕рдореИрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдм, рдпрджрд┐ tsc рдиреЗ sourceMap рдбреЗрдЯрд╛ рди рдХреЗрд╡рд▓ .js рдореЗрдВ рдмрд▓реНрдХрд┐ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рднреА рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рд╣реИ ...

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

рд╡реИрд╕реЗ рднреА, .d.ts рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ .js рдлрд╛рдЗрд▓реЛрдВ рдХреА рддрд░рд╣ рд╣реА рд╕реЛрд░реНрд╕ рдореИрдкрд┐рдВрдЧ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

рд╣рдо рдХреЗрд╡рд▓ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ + рдПрдирдкреАрдПрдо рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рд╕рдорд╛рдзрд╛рди: рдиреЛрдб рдИрдПрд╕ 6 рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ / рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ (#11103 рднреА рджреЗрдЦреЗрдВ)

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

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

рдЗрд╕рд▓рд┐рдП, рдЬреЛ рдХреБрдЫ рднреА рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдЦрд┐рд░рдХрд╛рд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкреВрд░реЗ рд╡рд┐рдХрд╛рд╕ рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдмрд╕ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рджрд┐рди-рдкреНрд░рддрд┐рджрд┐рди рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛!

рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрдИ ts рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдПрдХ рд╣реА js рдлрд╝рд╛рдЗрд▓ ( --outFile ) рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрдИ ts рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдпреЗ рдпрд╛ рддреЛ рдРрдк рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ (рд╡реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ) рдпрд╛ lib рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ (рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдХреЛрдб)ред рдЕрдХреНрд╕рд░ рд╣рдо рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдЯреАрдПрд╕-рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдРрдкреНрд╕ рдкрд░ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореЗрд░реЗ рдХрд┐рд╕реА рднреА рд╕рд╛рдереА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рд╕рднреА рдЯреАрдПрд╕-рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХрд┐рд╕реА рднреА рд╕рдордп рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рд╣реИрдВред

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

  • 1 ts рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ рдлреЗрдВрдХ рджреЗрдВ

    • рд╣рдо .ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реАрдзреЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ

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

    • рдЬреИрд╕рд╛ рдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрди рд╕рднреА рдЯреАрдПрд╕-рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╣рд░ рд╕рдордп рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреНрд▓реЛрдЯ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ X рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ A, B рдФрд░ D рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди Y рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ A рдФрд░ C рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

  • рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рд░рдЦреЗрдВ (рд╣рдорд╛рд░реА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐)

    • рд╣рдореЗрдВ рдЕрдиреНрдп ts-рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ .ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реАрдзреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдЕрдЧрд░ рд╣рдо рд╕реАрдзреЗ рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ f12 рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реЛрдЧрд╛ред

    • рдФрд░ рд╣рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреВрд▓/рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдпрд╛ рддреЛ рдХрдИ рдЯрд░реНрдорд┐рдирд▓реЛрдВ рд╕реЗ tsc -d -w рдХрдорд╛рдВрдб рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдлрд╛рдпрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕рднреА рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ tsconfig рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    • рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдиреНрдп рдЙрдкрдХрд░рдг рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдЧрд▓реНрдк) рдпрд╛ рд╢рд╛рдпрдж рд╣рдо tsconfigs рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдЧреНрд▓реЛрдм рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкрд╣рд▓реЗ рдЕрдВрдХ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рд╣рдорд╛рд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдРрдкреНрд╕ рд╕реЗ рд╕рдЦреНрддреА рд╕реЗ рдЕрд▓рдЧ рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗ, рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рдХрд┐ рд╣рдо рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рдлреЗрдВрдХ рд╕рдХреЗрдВред рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдХрдореА рд╣реИред

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

рдХреНрдпрд╛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рд╣рдо tsconfig.json рдореЗрдВ рдРрд╕реА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

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

рдХреНрдпрд╛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рд╣рдо tsconfig.json рдореЗрдВ рдРрд╕реА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдмрд┐рд▓реНрдб рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЖрдкрдХреЗ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд▓реНрдк, рдЧреНрд░рдВрдЯ, рдмреНрд░реЛрдХрд▓реА, рдПрдордПрд╕рдмрд┐рд▓реНрдб, рдмреЗрд╕рд▓, рдЖрджрд┐ рдЬреИрд╕реЗ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдП рдЧрдП рд╣реИрдВред
рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдПрдХ .d.ts рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

@mhegazy рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддреА рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд▓рд░реНрди рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ рдХрдИ рдкреИрдХреЗрдЬ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреА package.json рдореЗрдВ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣реА рдирд┐рд░реНрднрд░рддрд╛ "types" рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдЙрдирдХреЗ tsconfig.json ред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ --outFile рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╣ рдПрдХ рдкреБрд░рд╛рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдЬреЛ рдЕрднреА рддрдХ ES рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд╣реАрдВ рдЧрдИ рд╣реИ), рдФрд░ "typings" package.json рдмрдВрдбрд▓ .d.ts рдЧрдП рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ

рд╣рдо рдЧрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдВрдбрд▓рд┐рдВрдЧ/рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдореБрджреНрджреЗ рд╣реИрдВ:

  • #15488 рдФрд░ #15487 рдЬреИрд╕реЗ рдореБрджреНрджреЛрдВ рдХреЗ рдХрд╛рд░рдг, рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд▓рд┐рдВрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдЧреЛ-рдЯреВ-рдбреЗрдлрд┐рдирд┐рд╢рди рдЖрдкрдХреЛ рдПрдХ рдмрдВрдбрд▓ рдХреА рдЧрдИ .d.ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдпрд╣ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрд░реЛрдд рддрдХ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред
  • рдкреВрд░реНрдг рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рддрд░реАрдХрд╛ lerna run build --sort (рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ tsc ) рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдУрд╡рд░рд╣реЗрдб рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдиреНрдо рджреЗрдЧрд╛, рдмрд╣реБрдд рдмрд╛рд░ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред .

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрдбрд╝реА рдирдЬрд░ рд░рдЦ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рднреА рдЙрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рджреВрд╕рд░реЛрдВ рдиреЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИред
рдПрдХрд╛рдзрд┐рдХ "рдкреНрд░реЛрдЬреЗрдХреНрдЯ", рдкреНрд░рддреНрдпреЗрдХ рдЗрд╕рдХреА tsconfig.json рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рдеред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ рдЬреИрд╕реЗ @mhegazy рдиреЗ рдмрддрд╛рдпрд╛: рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ .d.ts рдлрд╝рд╛рдЗрд▓ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд░реНрднрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдЖрдИрдбреАрдИ рд╕рдорд░реНрдерди рд╣реИ: рд╕рдВрджрд░реНрднреЛрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ, рд╡реЗ рдХреЗрд╡рд▓ рдПрдХ tsconfig.json рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рдПрдХ рдмрджрд▓реА рд╣реБрдИ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ рдкреНрд░рднрд╛рд╡ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд╣реАрдВ рдлреИрд▓рддреЗ рдХреНрдпреЛрдВрдХрд┐ tsconfig.json рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реИ рдФрд░ рдХрднреА-рдХрднреА рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдЬреЛ рдЖрдИрдбреАрдИ рдореЗрдВ рдкрдХрдбрд╝реА рдЬрд╛ рд╕рдХрддреА рдереАрдВред

It's happening

рд╣реЗ рднрдЧрд╡рд╛рди

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

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн: рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдорд╛рдкрдиреАрдпрддрд╛

рдкрд░рд┐рдЪрдп

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рд╕реИрдХрдбрд╝реЛрдВ рд╣рдЬрд╛рд░реЛрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреИрдорд╛рдиреЗ рдХрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЯреАрдореЛрдВ рдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рд╣реИрдВ рдФрд░ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорд╛рдирдХреАрдХреГрдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЬрдмрдХрд┐ рд╣рдордиреЗ рд╕рдордп рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдк-рдЪреЗрдХрд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдмрд╣реБрдд рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, TS рдХрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрднреА рднреА рдХрдард┐рди рд╕реАрдорд╛рдПрдБ рд╣реИрдВ,
рдФрд░ 32-рдмрд┐рдЯ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдЬреИрд╕реА рдмрд╛рдзрд╛рдПрдВ рдЬреЛ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдХреЛ "рдЕрд╕реАрдо рд░реВрдк рд╕реЗ" рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИрдВред

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

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

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

рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ

рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рдореБрдЦреНрдп рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВред

рд╕рд╛рдкреЗрдХреНрд╖ рдореЙрдбреНрдпреВрд▓

рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдпреЗ рдЖрдпрд╛рдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдХ рдкрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВред ../../core/utils/otherMod рдЬреИрд╕реЗ рдкрде рдвреВрдВрдврдирд╛ рдЖрдо рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрди рд░реЗрдкреЛ рдореЗрдВ рдЪрд╛рдкрд▓реВрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЖрдорддреМрд░ рдкрд░ рдкрд╕рдВрдж рдХреА рдЬрд╛рддреА рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг

рдпрд╣рд╛рдБ рдЦрд╛рди рдЕрдХрд╛рджрдореА рдХреЗ рдкрд░реНрд╕рд┐рдпрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

https://github.com/Khan/perseus/blob/master/src/components/graph.jsx рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд

const Util = require("../util.js");
const GraphUtils = require("../util/graph-utils.js");
const {interactiveSizes} = require("../styles/constants.js");
const SvgImage = require("../components/svg-image.jsx");

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ

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

рдореЛрдиреЛ-рд░реЗрдкреЛ

рдПрдХ рдореЛрдиреЛ-рд░реЗрдкреЛ рдореЗрдВ рдХрдИ рдореЙрдбреНрдпреВрд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЧреИрд░-рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдк-рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЖрдпрд╛рдд (рдЬреИрд╕реЗ import * as C from 'core/thing ) рдЖрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ, рдкреНрд░рддреНрдпреЗрдХ рд░реВрдЯ рдореЙрдбреНрдпреВрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдирдкреАрдПрдо рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг

https://github.com/angular/angular/blob/master/packages/forms/src/validators.ts рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд

import {InjectionToken, ╔╡isObservable as isObservable, ╔╡isPromise as isPromise} from '@angular/core';
import {forkJoin} from 'rxjs/observable/forkJoin';
import {map} from 'rxjs/operator/map';
import {AbstractControl, FormControl} from './model';

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ

рд╡рд┐рднрд╛рдЬрди рдХреА рдЗрдХрд╛рдИ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдХрд╛ рдкреНрд░рдореБрдЦ рднрд╛рдЧ рд╣реЛред rxjs , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдк-рднрд╛рдЧреЛрдВ ( observable , operator ) рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрдИ рднреА рд╕реНрдХреЛрдкреНрдб рдкреИрдХреЗрдЬ (рдЬреИрд╕реЗ @angular/core ) рдХрд░рддрд╛ рд╣реИред

рдЖрдЙрдЯрдлрд╛рдЗрд▓

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

рдЙрджрд╛рд╣рд░рдг

https://github.com/Microsoft/TypeScript/blob/master/src/compiler/tsc.ts

/// <reference path="program.ts"/>
/// <reference path="watch.ts"/>
/// <reference path="commandLineParser.ts"/>

https://github.com/Microsoft/TypeScript/blob/master/src/harness/unittests/customTransforms.ts

/// <reference path="..\..\compiler\emitter.ts" />
/// <reference path="..\harness.ts" />

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ

рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреНрдпреЗрдХ outFile рдХреЛ рдПрдХ рдЕрд▓рдЧ script рдЯреИрдЧ (рдпрд╛ рд╕рдордХрдХреНрд╖) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп (рдЬреИрд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдпрдВ) рдХреЛ рдкреВрд░реНрд╡ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдореЛрдиреЛрд▓рд┐рдерд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ .

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн: рдЕрд▓рдЧрд╛рд╡ рдХреА рдПрдХ рдирдИ рдЗрдХрд╛рдИ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рд╕реЗ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрд╡рд▓реЛрдХрди:

  • рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдорддреМрд░ рдкрд░ "рддреЗрдЬрд╝" (< 5-10s) рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ 50,000 LOC (рдЧреИрд░-.d.ts) рдХреЛрдб рдХреЗ рддрд╣рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ
  • .d.ts рдлрд╛рдЗрд▓реЗрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ skipLibCheck рддрд╣рдд, рдЙрдирдХреА рдЯрд╛рдЗрдкрдЪреЗрдХрд┐рдВрдЧ рдФрд░ рдореЗрдореЛрд░реА рд▓рд╛рдЧрдд рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рдЧрднрдЧ "рдореБрдХреНрдд" рд╣реИрдВ
  • рд▓рдЧрднрдЧ рд╕рднреА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ 50,000 LOC рд╕реЗ рдЫреЛрдЯреЗ рдШрдЯрдХреЛрдВ рдореЗрдВ рдЙрдк-рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рд▓рдЧрднрдЧ рд╕рднреА рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреА рдлрд╛рдЗрд▓реЛрдВ рдХреА рдХреБрдЫ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИрдВ рдЬреЛ рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреЗ рдЙрдк-рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддреА рд╣реИрдВ
  • рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдВрдкрд╛рджрди рд▓реАрдл-рдиреЛрдб рдпрд╛ рдирд┐рдпрд░-рд▓реАрдл-рдиреЛрдб рдШрдЯрдХреЛрдВ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдХреА рдкреБрди: рдЬрд╛рдВрдЪ рдпрд╛ рдкреБрди: рдЙрддреНрд╕рд░реНрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ

рдЗрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рд░рдЦрддреЗ рд╣реБрдП, рдпрджрд┐ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рдХреЗ рдХреЗрд╡рд▓ рдПрдХ 50,000 LOC рдЦрдВрдб рдХреЛ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рддреЛ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рд▓рдЧрднрдЧ рдХреЛрдИ "рдзреАрдореА" рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рд╣реЛрдЧреА, рдФрд░ рд╣рдо рд▓рдЧрднрдЧ рдХрднреА рднреА рд╕реНрдореГрддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред

рд╣рдо рдПрдХ рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ , рдЬреЛ рджреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХрд▓рди рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдирдИ рддрд░рд╣ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрд╢реНрд░рд┐рдд рдЗрдХрд╛рдИ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ; рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдо рдмрд╕ рдЗрд╕рдХреЗ .d.ts рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдПрдХ рдирд┐рдпрддрд╛рддреНрдордХ рд╕реНрдерд╛рди рд╕реЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред

рд╡рд╛рдХреНрдп - рд╡рд┐рдиреНрдпрд╛рд╕

рдПрдХ рдирдпрд╛ references рд╡рд┐рдХрд▓реНрдк (рдХрд╛рд░реНрдпрд╕реВрдЪреА:! Bikeshed) рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ tsconfig.json :

{
  "extends": "../tsproject.json",
  "compilerOptions": {
    "outDir": "../bin",
    "references": [
      { "path": "../otherProject" }
    ]
  }
}

references рд╕рд░рдгреА рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ references рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ path рдПрдХ tsconfig.json рдлрд╝рд╛рдЗрд▓ рдпрд╛ tsconfig.json рдлрд╝рд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рд╡рд╕реНрддреБ рдореЗрдВ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВред

рдЕрд░реНрде рд╡рд┐рдЬреНрдЮрд╛рди

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ:

  • рдЬрдм рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ rootDir рдХреА рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ .ts рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдЙрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ outDir .d.ts рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ

    • рдпрджрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рдЬрд╛рд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Referenced project "../otherProject" is not built рдмрдЬрд╛рдп рдПрдХ рд╕рд╛рдзрд╛рд░рдг "рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдорд┐рд▓реА"

  • рдФрд░ рдХреБрдЫ рдирд╣реАрдВ (TODO: рдЕрдм рддрдХ?)

рд╕рдВрджрд░реНрднрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдз

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

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЗрдВ рд╕рддреНрдп рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:

  • рдХрд┐рд╕реА рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЗрдирдкреБрдЯ .ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХрднреА рднреА рдкрдврд╝реЗрдВ рдпрд╛ рдкрд╛рд░реНрд╕
  • рдХрд┐рд╕реА рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдХреЗрд╡рд▓ tsconfig.json рдХреЛ рдбрд┐рд╕реНрдХ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
  • рдЕрдк-рдЯреВ-рдбреЗрдЯ рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП

рдЗрди рд╡рд╛рджреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

  • declaration рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ true рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ
  • rootDir рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ "." ( tsconfig.json рдлрд╝рд╛рдЗрд▓ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛), рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕реЗрдЯ рд╕реЗ рдЕрдиреБрдорд╛рдирд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп
  • рдпрджрд┐ files рд╕рд░рдгреА рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЙрд╕реЗ рд╕рднреА рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдо рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ

    • рдЕрдкрд╡рд╛рдж: рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП node_modules/@types ) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

  • рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реНрд╡рдпрдВ references рд╕рд░рдгреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдЬреЛ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИ)ред

рдХреНрдпреЛрдВ "declaration": true ?

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рдЕрдкрдиреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓реЛрдВ (.ts) рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ (.d.ts) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд╛рдг рдЧрддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рддреЛ, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рднреА рд╕рдВрджрд░реНрднрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ declaration рд╕реЗрдЯрд┐рдВрдЧ рдЪрд╛рд▓реВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдпрд╣ "project": true рджреНрд╡рд╛рд░рд╛ рдирд┐рд╣рд┐рдд рд╣реИ

rootDir рдХреНрдпреЛрдВ рдмрджрд▓реЗрдВ?

rootDir рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдореИрдк рдХрд░рддреА рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдВрдкреВрд░реНрдг рдЧреНрд░рд╛рдлрд╝ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд░реЛрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕реЗрдЯ ["src/a.ts", "src/b.ts"] рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ ["a.js", "b.js"] ,
рд▓реЗрдХрд┐рди рдЗрдирдкреБрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕реЗрдЯ ["src/a.ts", "b.ts"] рдЖрдЙрдЯрдкреБрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛ ["src/a.js", "b.js"] ред

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

рдХреЛрдИ рдкрд░рд┐рдкрддреНрд░ рдирд╣реАрдВ

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдкрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЧреНрд░рд╛рдл рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреА рд╣реИрдВред (TODO: рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рджреБрдГрд╕реНрд╡рдкреНрди рдмрдирд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ?) рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдЬреЛ рдХрд┐ рдмрдирдиреЗ рд╡рд╛рд▓реЗ рд╡реГрддреНрддрд╛рдХрд╛рд░ рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ:

TS6187: Project references may not form a circular graph. Cycle detected:
    C:/github/project-references-demo/core/tsconfig.json ->
    C:/github/project-references-demo/zoo/tsconfig.json ->
    C:/github/project-references-demo/animals/tsconfig.json ->
    C:/github/project-references-demo/core/tsconfig.json

tsbuild

рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред .ts рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tsc рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдФрд░ рдкреЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╣реБрдд рдХрдо рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ 50,000 LOC "рддреЗрдЬ" рд╕реАрдорд╛ рдХреЛ рдкрд╛рд░ рдХрд░рддреА рд╣реИрдВред

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

рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ gulp , webpack , рдЖрджрд┐, (рдпрд╛ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд TS рдкреНрд▓рдЧрдЗрдиреНрд╕) рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрднреЛрдВ рдХреА рд╕рдордЭ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдк-рдЯреВ-рдбреЗрдЯ рдЬрд╛рдБрдЪ рд╕рд╣рд┐рдд рдЗрди рдмрд┐рд▓реНрдб рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗред

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ , рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд┐рд▓реНрдб рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:

  • рддреЗрдЬрд╝ рдЕрдк-рдЯреВ-рдбреЗрдЯ рдЬрд╛рдБрдЪ
  • рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреНрд░рд╛рдлрд╝ рдСрд░реНрдбрд░рд┐рдВрдЧ
  • рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд░реНрдорд╛рдг
  • (TODO: рдЕрдиреНрдп?)

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

рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрднрд╛рдЧ

  • рдЖрдк рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрдХреНрд░рдордг рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ

    • рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ tsconfig.json рдлрд╝рд╛рдЗрд▓реЗрдВ рдЫреЛрдбрд╝реЗрдВ рдФрд░ рдлрд┐рд░ рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝реЗрдВ

  • baseUrl рдкрд░ рдкреНрд░рднрд╛рд╡

    • рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдХреЛрдИ рдЕрдВрддрд┐рдо-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ

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

    • рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ (рдПрди = 1) рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реИ

    • рд▓реЛрдЧ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЙрджрд╛рд╣рд░рдг рдпрд╛ рдкреНрд░рддрд┐-рдЙрджрд╛рд╣рд░рдг рдЦреЛрдЬреЗрдВ

  • рдХреНрдпрд╛ рд╣рдореЗрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП dtsEmitOnly рд╕реЗрдЯрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдЬреЗрдПрд╕ рдХреЛ рд╡реЗрдмрдкреИрдХ/рдмреЗрдмреЗрд▓/рд░реЛрд▓рдЕрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рдЗрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

    • рд╢рд╛рдпрдж references + noEmit рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ

рд╢рд╛рдирджрд╛рд░!

рд▓рд░реНрдирд╛ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ

  • рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ (рдПрди = 1) рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реИ

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

TODO рдЕрдиреБрднрд╛рдЧ рд╕рдВрдкреВрд░реНрдг рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП TODO рд╣реИ

рдЕрдЪреНрдЫрд╛!

рд╕рдВрджрд░реНрднрд┐рдд рдХреА рдЧрдИ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реНрд╡рдпрдВ рдПрдХ рд╕рдВрджрд░реНрдн рд╕рд░рдгреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдЬреЛ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИ)ред

рдХреНрдпрд╛ рдпреЗ рд╡рд╛рдХрдИ рдЬрд░реВрд░реА рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдРрд╕реЗ рдкреИрдХреЗрдЬ рдореЗрдВ .d.ts рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдВ?
(рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, tsconfig.json рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?)

рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛: рдПрдХ (рдЬреИрд╕реЗ рддреГрддреАрдп-рдкрдХреНрд╖) рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ outDir рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП .ts , .js рдФрд░ .d.ts рдмрдЧрд▓ рдореЗрдВ рд╣реЛрдЧрд╛ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ, рдФрд░ рдЯреАрдПрд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ .ts рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп .d.ts ред

рдореЗрд░реЗ рд▓рд┐рдП outDir рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг import "package/subthing" -рд╕реНрдЯрд╛рдЗрд▓ рдЖрдпрд╛рдд рдХреЛ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╣реИ, рдЬреЛ рдЕрдиреНрдпрдерд╛ import "package/dist/subthing" рд╕рд╛рде outDir: "dist" ред
рдФрд░ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ, рдпрд╛ рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рднрдВрдбрд╛рд░ рдХрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП npm link )ред

(рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдпрджрд┐ package.json рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ main , рд▓реЗрдХрд┐рди рдЕрдлрд╕реЛрд╕...)

рдХреНрдпрд╛ рд╣рдореЗрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП dtsEmitOnly рд╕реЗрдЯрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ JS рдХреЛ рд╡реЗрдмрдкреИрдХ/рдмреЗрдмреЗрд▓/рд░реЛрд▓рдЕрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рдЗрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдмрд┐рд▓реНрдХреБрд▓! рдпрд╣ рдЗрд╕ рд╕рдордп рдПрдХ рдмрдбрд╝рд╛ рд▓рд╛рдкрддрд╛ рдЯреБрдХрдбрд╝рд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдк outFile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдПрдХрд▓ d.ts рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдореЙрдбреНрдпреВрд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдмрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ ( export as namespace MyLib ) рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ d.ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдг рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрд╕реЗ рдПрдорд┐рдЯрд░ рдФрд░ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдХреНрдпрд╛ рдпреЗ рд╡рд╛рдХрдИ рдЬрд░реВрд░реА рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдРрд╕реЗ рдкреИрдХреЗрдЬ рдореЗрдВ .d.ts рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдВ?

рд╣рдореЗрдВ рд▓рдХреНрд╖реНрдп tsconfig рдореЗрдВ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд╣рд╛рдБ рд╣реИред рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ "рдЖрдкрдХреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ rootDir рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛" рдЬреЛ рдХрд┐ рдХрд╛рдлреА рдмреЛрдЭрд┐рд▓ рдерд╛ (рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ tsconfig рдореЗрдВ "rootDir": "." рд▓рд┐рдЦрдирд╛ рдерд╛)ред рдЪреВрдВрдХрд┐ рд╣рдо рдЗрд╕ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рдлрд╝реНрд▓рд┐рдк рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрджрд░реНрдн рд╕рд░рдгреА рд╣реИ рддреЛ рдЖрдкрдХреЛ "рдкреНрд░реЛрдЬреЗрдХреНрдЯ" рд╡реНрдпрд╡рд╣рд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╡рд╣ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрдЬрд╛рдп рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдЭрдВрдбреЗ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдЧрд╛ рдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рд╣рдордиреЗ рдЫреЛрдЯреА рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ рдЙрдк-рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ tsconfig.json рд╣реИ рдФрд░ рдЧрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдбреА.рдЯреАрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдХреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИрдВред

рдПрдХ рдЖрджрд░реНрд╢ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рд╕рдВрджрд░реНрднрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдЕрд░реНрдерд╛рддред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ "рдмрд┐рд▓реНрдб" рдХрд░рддрд╛ рд╣реИ рдФрд░ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ "d.ts" рдХреЗ рдмрд░рд╛рдмрд░ рд░рдЦрддрд╛ рд╣реИред рдпрд╣ "рд╕реНрд░реЛрдд" рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ "рдЖрд╢реНрд░рд┐рдд" рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджрд┐рдЦрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рд╣рдореЗрдВ рд▓рдХреНрд╖реНрдп tsconfig рдореЗрдВ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд╣рд╛рдБ рд╣реИред

рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╕рдЪ рд╣реЛрддрд╛ рд╣реИ рдЬрдм outDir рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣реИ рдирд╛?

рдЬреИрд╕реЗ: рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ tsconfig рд╣реИ рдХрд┐:

  • outDir рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ declaration: true ), рддреЛ рд╣рдореЗрдВ rootDir рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рди рд╣реА references
  • рдХрд░рддрд╛ рд╣реИ outDir , рддреЛ рдЖрдкрдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП references рдФрд░/рдпрд╛ rootDir (рдФрд░ declaration: true ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА

рдкреВрдЫрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдХрд┐рд╕реА рднреА рдЯреАрдПрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП 'рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЛрдб' рдХреЛ рдХреЗрд╡рд▓ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдХреЗ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╛рдиреА рдпрд╣ рдореЗрд░реЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИред

рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ .d.ts рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреЗ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рдвреВрдВрдв рд░рд╣рд╛ рд╣реИ (рдпрд╛рдиреА рдХреЛрдИ .ts рдлрд╝рд╛рдЗрд▓реЗрдВ рдпрд╛ tsconfig рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛)ред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдПрдирдкреАрдПрдо рд╕рдВрд╕реНрдХрд░рдг (рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ .d.ts рдлрд╛рдЗрд▓реЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ) рдХреЛ 'рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд' рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдорд╛рдорд▓рд╛ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, NPM рдкреИрдХреЗрдЬ MyApp рдФрд░ SomeLib рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
SomeLib рдореЗрдВ tsconfig: declaration: true ред

рдЬреИрд╕реЗ:

package.json
tsconfig.json
index.ts
sub.ts

рд╕рдВрдХрд▓рд┐рдд, рдпрд╣ рдмрди рдЬрд╛рддрд╛ рд╣реИ:

package.json
tsconfig.json
index.ts
index.d.ts
index.js
sub.ts
sub.d.ts
sub.js

рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рд╕рдХреНрд╖рдо рдмрдирд╛рддреА рд╣реИ рдЙрджрд╛

// somewhere in MyApp
import something from "SomeLib/sub";

рдкреНрд░рдХрд╛рд╢рд┐рдд рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдореЗрдВ, рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдореЗрд╢рд╛ .ts рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЯреАрдПрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ MyApp SomeLib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

рддреЛ, рдПрдирдкреАрдПрдо рдкрд░, рдпрд╣ рдмрди рдЬрд╛рддрд╛ рд╣реИ:

package.json
index.d.ts
index.js
sub.d.ts
sub.js

рдЕрдм, рдЕрдЧрд░ рдореИрдВ MyApp рдХреЗ tsconfig рдореЗрдВ references: ["SomeLib"] рдбрд╛рд▓рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ NPM рд╕рдВрд╕реНрдХрд░рдг рдФрд░ SomeLib рдХреЗ рд╕реНрд░реЛрдд рд╕рдВрд╕реНрдХрд░рдг рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП 'рдЬреИрд╕рд╛ рд╣реИ' рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ , рдпрд╛рдиреА рдпрд╣ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ tsconfig рдЧреБрдо рд╣реЛрдирд╛, рдЬрдм рддрдХ рдпрд╣ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ sub.d.ts рдкрд╛рддрд╛ рд╣реИред


рд╕рдВрдмрдВрдзрд┐рдд, рд▓реЗрдХрд┐рди рдЕрд▓рдЧ рдкреНрд░рд╢реНрди:

рдореБрдЭреЗ рдЕрдм рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ, рдХрд┐ рдпрджрд┐ SomeLib рдХреЗ рд▓реЗрдЦрдХ рдЕрдкрдиреЗ tsconfig рдореЗрдВ references рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ .ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде NPM рдкреИрдХреЗрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреАрдПрд╕ рдЕрднреА рднреА рдЗрдиреНрд╣реЗрдВ рд╣рдореЗрд╢рд╛ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛ рдЬрдм рдХреЛрдИ рдЖрд╢реНрд░рд┐рдд рдкреИрдХреЗрдЬ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ references: ["SomeLib"] рдХреЛ рдЙрдирдХреЗ tsconfig рдореЗрдВ рдирд╣реАрдВ рдбрд╛рд▓рддрд╛ рд╣реИред

рдпрд╛ рдпрд╣ рднреА рдЗрд░рд╛рджрд╛ рд╣реИ рдХрд┐ MyLib рдореЗрдВ references рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ 'рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реАрдорд╛' рднреА рдкреЗрд╢ рдХрд░реЗрдЧрд╛ рдЬрдм рдЗрд╕реЗ рдХреЗрд╡рд▓ import 'рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдпрд╛рдиреА references рдЗрд╕реЗ рдирд╣реАрдВ рдХрд░рдирд╛)?

рдЖрдИрдЖрдИрдЖрд░рд╕реА, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рдерд╛ рдХрд┐ рдпрджрд┐ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП node_modules рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд┐рдд рдерд╛, рддреЛ .d.ts рдлрд╛рдЗрд▓реЛрдВ рдХреЛ .ts рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрдорд╛рдиреА (" node_modules рдорд╛рдзреНрдпрдо рд╕реЗ") рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдерд╛ред рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕реНрдкрд╖реНрдЯ 'рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реАрдорд╛' рд╣реЛрдиреЗ рд╕реЗ рдпрд╣ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП projectRoot: true рдХреЗ рдмрдЬрд╛рдп рдпрд╛ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ references )?

рд▓рд░реНрди рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ред

  1. рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ, рд╕рдВрдХреБрд▓ рдХреЛ рдореЛрдиреЛрд░реЗрдкреЛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реНрдпрдХреНрддрд┐рдЧрдд tsconfig json рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреЛрдИ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

    • рдпрд╣ рдЖрдкрдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдмрд╕ рдореБрдЦреНрдп рд░реЗрдкреЛ рдЯреВрд▓рд┐рдВрдЧ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓реЛрди рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ ProseMirror: https://github.com/ProseMirror/prosemirror

  2. рд░реВрдЯ "рд╡рд░реНрдХрд╕реНрдкреЗрд╕" рд░реЗрдкреЛ рдореЗрдВ (рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдХреЛрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд░реЗрдкреЛ рдХреЛ рднреА рдХреНрд▓реЛрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдЗрд╕рдХреЗ tsconfig.json рдореЗрдВ рд╕рдВрджрд░реНрдн рд╣реИрдВ

    • рдпрд╣ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЯреВрд▓рд┐рдВрдЧ .d.ts рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реНрд░реЛрдд рдХреЗ рд╕рднреА рддрд░рд╣ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХреЗ рдФрд░ рдЙрдирдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХреЗред

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

рдПрдХ "рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░" tsconfig.json рдХреА рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рддрд░рд╣ рдпрджрд┐ рдЖрдк рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреИрдХреЗрдЬ рдХреЛ "рдЧрд┐рдЯ рдХреНрд▓реЛрди" рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ (рдЬреИрд╕реЗ npm рдпрд╛ рдпрд╛рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛) рдЖрдкрдХреЛ рдЗрд╕ рдкрд░ рдЕрд▓рдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдХрд▓рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдЙрдирдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд▓рд╛рдПрдЧреАред рдпрджрд┐ рдЖрдк рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЛ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрдкрдХреЛ рд╕рднреА рд╕реНрд░реЛрддреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рджреЗрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ tsconfig.json рднреА рдпрд╛рд░реНрди рдХреЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛрддрд╛ рд╣реИ package.json https://yarnpkg.com/lang/en/docs/workspaces/

рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкреНрд░рдорд╛рдг рджрд┐рдпрд╛ рд╣реИ

https://github.com/spion/typescript-workspace-plugin

рдмрд╕ рдЕрдкрдиреЗ рд╕рднреА tsconfig.json рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд┐рдкреЛрдЬ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд╝реЗрдВ

{
  "plugins": [{"name": "typescript-workspace-plugin"}]
}

рдлрд┐рд░ рдКрдкрд░реА рд╕реНрддрд░ package.json рдкрд░ рдпрд╛рд░реНрди рдХреА "рдХрд╛рд░реНрдпрд╕реНрдерд╛рди" рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде, "рдХрд╛рд░реНрдпрд╕реНрдерд╛рди-рд╕реНрд░реЛрдд" рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реЗрдВ:

{
  "workspaces": ["packages/*"],
  "workspace-sources": {
    "*": ["packages/*/src"]
  }
}

рдлрд╝реАрд▓реНрдб tsconfig.json рдореЗрдВ "рдкрде" рдлрд╝реАрд▓реНрдб рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдкреИрдХреЗрдЬ рд╕реНрд░реЛрддреЛрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред рдЙрдЪрд┐рдд "рдкрд░рд┐рднрд╛рд╖рд╛ / рдкреНрд░рдХрд╛рд░ рдкрд░ рдЬрд╛рдПрдВ" рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рд╕рдорд╛рди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╕рдЪ рд╣реИ рдЬрдм outDir рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣реИ рдирд╛?

рд╕рд╣реАред рд╣рдордиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдерд╛ рдХрд┐ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд╛рд▓реЗ рд▓рдЧрднрдЧ рд╕рднреА рд▓реЛрдЧ outDir рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА рдЬреЛ рдирд╣реАрдВ рд╣реИрдВ

рдЕрдм, рдЕрдЧрд░ рдореИрдВ MyApp рдХреЗ tsconfig рдореЗрдВ рд╕рдВрджрд░реНрдн: ["SomeLib"] рдбрд╛рд▓рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ NPM рд╕рдВрд╕реНрдХрд░рдг рдФрд░ SomeLib рдХреЗ рд╕реНрд░реЛрдд рд╕рдВрд╕реНрдХрд░рдг рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП 'рдЬреИрд╕рд╛ рд╣реИ' рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдмрдбрд╝реЗ рдкреНрд░рд╢рдВрд╕рдХ, рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рдкрд╕рдВрдж рд╣реИред рдореБрдЭреЗ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдпрд╣рд╛рдВ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдпрд╛ рддреЛ рдП) рджреЛрдиреЛрдВ .ts рдФрд░ tsconfig рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЯреАрдПрд╕ рдЙрдиреНрд╣реЗрдВ рдвреВрдВрдврддрд╛ рд╣реИ, рдпрд╛ рдмреА) рди рддреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреЗрд╡рд▓ .d.ts рдлрд╛рдЗрд▓реЗрдВ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реЛрдВред (рдП) рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрднреЛрдВ рдХрд╛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдкрд╛рд▓рди рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рд╣реА рдмрд╛рдд рд╣реЛрдЧреА рдФрд░ (рдмреА) рдореЗрдВ рд╣рдо рдЧрд▓рдд рдЬрдЧрд╣реЛрдВ рдкрд░ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗред

рдпрд╛ рдЗрд░рд╛рджрд╛ рдпрд╣ рднреА рд╣реИ рдХрд┐ MyLib рдореЗрдВ рд╕рдВрджрд░реНрдн рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп 'рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реАрдорд╛' рднреА рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗ (рдпрд╛рдиреА рдЗрд╕реЗ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВ)?

@mhegazy рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХреА рдФрд░ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдореЙрдбрд▓ рд╣реИ: references рд╕рд░рдгреА рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдмрд╛рд╣рд░ .ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрднреА рднреА "рджреЗрдЦрддрд╛" exclude d рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдЕрдВрддрд░реНрдЧрддред рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдХреЗрд▓реЗ рд▓рд░реНрди рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ("рдХрд╛рд░реНрдп" рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "рдореЙрдбреНрдпреВрд▓ рд╕рдВрджрд░реНрдн рд╣рдореЗрд╢рд╛ .d.ts рдХреЗ рд▓рд┐рдП рд╣рд▓ рд╣реЛрддреЗ рд╣реИрдВ") рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдиреНрдпред

рдореБрдЭреЗ "рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░" рдореЙрдбрд▓ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╕рдЪ рд╣реИ рдЬрдм outDir рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣реИ рдирд╛?

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

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдорд╛рдзрд╛рди рдореЗрдВ 67 рдЯреАрдПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдмрд┐рдирд╛ outdir рд╕рдВрдХрд▓рд┐рдд рд╣реИрдВ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ (рдФрд░ рдмрджрд╕реВрд░рдд рдФрд░ рдЕрдиреНрдп рдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдмрд┐рд▓реНрдб рдЧреНрд░рдВрдЯрдЯрд╛рд╕реНрдХ рд╣реИрдВред

рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдРрд╕рд╛ tsconfig.json рд╣реЛрддрд╛ рд╣реИ

 "include": [
    "../baseProj/Lib/jquery.d.ts",
    "../baseProj/baseProj.d.ts"
  ]

рдореБрдЭреЗ рд╕рдВрджрд░реНрдн рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛, рдФрд░ рд╕рд╣реА - AFAICT lerna рдФрд░ рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

  1. рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА package.json рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрд╕ рдХреНрд░рдо рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдмрд┐рд▓реНрдб рдХреЛ рдЪрд▓рд╛рдирд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд▓рд░реНрди рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд░рди рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ рдЗрд╕реЗ рдХреНрд░рдо рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЙрдкрдХрд░рдг рд▓рд┐рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдкрд░ рд╕рдорд╛рдирддрд╛ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИред skipLibCheck рдХреЛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡ рдХреЛ рдирдЧрдгреНрдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХреА рд╣реИред
  2. Lerna рдФрд░ Yarn рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреБрдХреНрдд node_modules рд╕реНрдерд╛рди рдореЗрдВ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рд┐рдореНрд▓рд┐рдВрдХ рдмрдирд╛рддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рднреА рдЖрд╢реНрд░рд┐рдд рджреВрд╕рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ package.json рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддреЗ рд╣реИрдВ, рдкреНрд░рдХрд╛рд░/рдЯрд╛рдЗрдкрд┐рдВрдЧ рдлрд╝реАрд▓реНрдб рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрджрд░реНрднрд┐рдд рдореЙрдбреНрдпреВрд▓.d.ts рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдвреВрдВрдврддреЗ рд╣реИрдВред

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

рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╡рд╣реАред рд▓рд░реНрди рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЕрдкрдиреЗ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рднрд╛рд╡ рд╕рдорд╛рди рд╣реИред рдЬрдм рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ tsc рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдорд╛рд░реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЧрдгрдирд╛ рдПрдХ рдмрдбрд╝реЗ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╣рдо рдПрдХ рдРрд╕реЗ рдореЙрдбрд▓ рдХреА рдУрд░ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ рдЬрд╣рд╛рдБ tsconfig.json рдПрдХ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЙрддреНрдкрдиреНрди рдЖрдЙрдЯрдкреБрдЯ рд╣реИ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ VS рдХреЛрдб рдХреЗ рд▓рд╛рдн рдХреЗ рд▓рд┐рдП)ред

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

+1 рдпрд╣ рдХрдорд╛рд▓ рд╣реЛрдЧрд╛ред

рдЕрдЧрд░ рд╣рдо рдмреЗрд╣рддрд░ рдмрд╣реБ-рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдкрдирд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдиреБрд░реЛрдз рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реЗрд╡рд╛ рд╣реЛрдЧрд╛, рдХреБрдЫ рдРрд╕рд╛ рдЬреИрд╕реЗ рд╡реАрдПрд╕ рдХреЛрдб рдЗрдВрдЯреЗрд▓рд┐рд╕реЗрдиреНрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд░рд╢ рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрдВрдЬрди рдХреЛ 100 рдмрд╛рд░ рд╕реНрдкрд┐рди рдХрд┐рдП рдмрд┐рдирд╛ tsc 100 рдмрд╛рд░ рдЖрд╣реНрд╡рд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рд╣рдорд╛рд░рд╛ рдирд┐рд░реНрдорд╛рдг рдХрд╛рдлреА рддреЗрдЬ рд╣реЛрдЧрд╛ред рдХрдВрдкрд╛рдЗрд▓рд░ рд╣рдорд╛рд░реЗ рд╕рдмрд╕реЗ рдорд╣рдВрдЧреЗ рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдкреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ, рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдордп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддрд╛ рд╣реИред

@iclanton @nickpape-msft @qz2017

рдЬреА рдмреЛрд▓рд┐рдпреЗ!

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛрдЧрд╛ рдпрджрд┐
'рдЧреЛ рдЯреВ рдбреЗрдлрд┐рдирд┐рд╢рди' d.ts рдлрд╛рдЗрд▓ рдХреЗ рдмрдЬрд╛рдп рд╕реЛрд░реНрд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рдЧрдпрд╛ рдФрд░
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реЗрдлрд░реЗрдВрд╕ рдЯреНрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬреЗ рдЧрдП 'рд╕рднреА рд╕рдВрджрд░реНрдн рдЦреЛрдЬреЗрдВ'ред

рд╕рдВрднрд╡рддрдГ рдпрд╣ 'рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдо рдмрджрд▓реЗрдВ' рдкреНрд░рдХрд╛рд░ рдХреЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рднреА рдЕрдирд▓реЙрдХ рдХрд░реЗрдЧрд╛ред

рдЧреБрд░реБ, 9 рдирд╡рдВрдмрд░, 2017 рдХреЛ рд░рд╛рдд 9:30 рдмрдЬреЗ рд╕рд▓реНрд╡рд╛рдЯреЛрд░ рдкреНрд░реАрд╡рд┐рдЯреА рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдЬреА рдмреЛрд▓рд┐рдпреЗ!

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/Microsoft/TypeScript/issues/3469#issuecomment-343356868 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AANX6d19Zz7TCd_GsP7Kzb-9XJAisG6Hks5s07VXgaJpZM4E-oPT
.

@mhegazy рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХреА рдФрд░ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдореЙрдбрд▓ рд╣реИ: рд╕рдВрджрд░реНрдн рд╕рд░рдгреА рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдмрд╛рд╣рд░ .ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрднреА рднреА "рджреЗрдЦрддрд╛" рдирд╣реАрдВ рд╣реИ - рдЗрд╕рдореЗрдВ рдмрд╣рд┐рд╖реНрдХреГрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рддрд╣рдд рдлрд╝рд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдЕрдЪреНрдЫрд╛, рдФрд░ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрд┐рд╕реА рдХреЛ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрджрд░реНрдн рдХреНрдпреЛрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛?
рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдзреНрд╡рдЬ рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ (рдЬреИрд╕реЗ projectRoot: true )ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддрдм references: ["foo"] рдФрд░ рдХреЗрд╡рд▓ references: [] рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реЛрдЧрд╛?
рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдореИрдВ import "foo" рдпрд╛ import "bar" , рддреЛ рджреЛрдиреЛрдВ рдХрд┐рд╕реА рднреА .ts рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдВрдЧреЗред

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

рдЗрд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП tsconfig.json ( projectRoot рдкрд░ TODO рдмрд╛рдЗрдХрд╢реЗрдб):

{
  "extends": "../tsproject.json",
  "compilerOptions": {
    "projectRoot": true
   }
}

рдЬрдм tsc рддрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдмрд╛рд╣рд░ рдХреБрдЫ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдмрд╣рд┐рд╖реНрдХреГрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рддрд╣рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕рд╣рд┐рдд), рдпрд╣ рдХреЗрд╡рд▓ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦреЗрдЧрд╛ (рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдХреЗрд╡рд▓ _prefer_ .d.ts рдлрд╝рд╛рдЗрд▓реЗрдВ, рдФрд░ tsconfig рдФрд░/рдпрд╛ .ts рдпрджрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдпрд╣реА рджреЗрдЦрддрд╛ рд╣реИ)ред

рдпрд╣ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рддреЗрдЬреА рд╕реЗ рдФрд░ рд╕рд░рд▓ рд╕рдВрдХрд▓реНрдк рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдореЛрдиреЛрд░реЗрдкреЛ рд╕рдВрджрд░реНрднреЛрдВ (рдпрд╛рдиреА import "../foo" ) рдФрд░ рдкреИрдХреЗрдЬ-рдЖрдзрд╛рд░рд┐рдд рд╕рдВрджрд░реНрднреЛрдВ (рдпрд╛рдиреА import "foo" ) рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдФрд░ рдЙрдирдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдФрд░ рдпрд╣ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди tsconfig.json рдорд╢реАрдирд░реА рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЕрдЧрд░ рдЗрд╕реЗ .d.ts рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рддреЛ рдпрд╣ рдХрдо рд╕рд╣рд╛рдпрдХ рд╣реЛрдЧрд╛ред

рдпрд╣ рд╕рдЪ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдореИрдВ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ :)


рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рднреА рдмрддрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рдЕрднреА рднреА рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ 'IntelliSense' .ts рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд░рд╣реЗред

рддреЛ, рдЕрдЧрд░, 'рд╕рдВрджрд░реНрдн рд▓рдЧрддрд╛ рд╣реИ' рдЖрджрд┐ рдХреЗ рд▓рд┐рдП 'рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдЬрд╛рдПрдВ,' рдЕрдиреБрд░реЛрдз рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдХреБрдЫ рд░рд┐рд╡рд░реНрд╕ рдорд╛рдирдЪрд┐рддреНрд░рдг рдЗрд╕реА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП .ts рд╕реЗ рдлрд╝рд╛рдЗрд▓ .d.ts рдлрд╝рд╛рдЗрд▓ рдпрд╣ рдЗрддрдирд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рджреВрд░ред

рдпрд╣ рдорд╛рдирдЪрд┐рддреНрд░рдг рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  • рдХреА рддрд░рд╣ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рдЯрд┐рдкреНрдкрдгреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ //# sourceURL = ../src/foo.ts рдореЗрдВ .d.ts

    • рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╕реЛрд░реНрд╕рдореИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ 'рд░реЛрд▓ рдЕрдк' .d.ts рд╕реЗ рдореВрд▓ .ts рд╡рд╛рдкрд╕ рдореИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

  • .js рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рд▓ рдХрд░рдирд╛, рдФрд░ `.ts . рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдпрд╣ .d.ts рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рд╡рд┐рд╖рдп рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ рдЬрдм рдЙрд╕ .ts рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЬ рдпрд╣ рдорд╛рдорд▓рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ рдХрд┐ .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд░реВрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рднреАред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛ рдХрд┐ рдпрджрд┐ рд╡рд╣ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рднреА рдХреБрдЫ рд╣реЛрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирд╛рдВрддрд░ tsc рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, tsbuild рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, compileOnSave -рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдорд╛рд░реНрдЯ рдЖрдИрдбреАрдИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@pgonzal @michaelaird https://github.com/spion/typescript-workspace-plugin рдХреЗрд╡рд▓ рдпрд╣реА рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрд╣реБ-tsconfig рдпрд╛рд░реНрди/рд▓реЗрд░реНрдирд╛/рдЖрджрд┐ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрджрд░реНрдн рдвреВрдВрдврддрд╛ рд╣реИред

рджрд┐рд▓рдЪрд╕реНрдк... рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рд░рд╢ рдХреЗ рд╕рд╛рде рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рджреЗрдЦ рд▓реЗрдВрдЧреЗред

рдПрдлрд╡рд╛рдИрдЖрдИ рдЗрд╕ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдордиреЗ рдмрдирд╛рдпрд╛ рдПрдХ рдФрд░ рдЖрд╕рд╛рди рдЙрдкрдХрд░рдг wsrun

lerna run , рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХреНрд░рдо рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, wsrun рдЙрдирдХреЗ package.json рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЯреЛрдкреЛрд▓реЙрдЬрд┐рдХрд▓ рдСрд░реНрдбрд░рд┐рдВрдЧ рдореЗрдВ рдкреИрдХреЗрдЬ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рд╕рдорд╛рдирддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмреЗрд╣рддрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдмрд╕ рдПрдХ рдиреЛрдЯ, рдУрдУ рдпрд╛рд░реНрди рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдореЛрдиреЛрд░реЗрдкреЛ рдЙрдкрдХрд░рдг рд╣реИред рдЗрд╕рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХрдорд╛рдВрдб рдХреЗ 'рдЯреЛрдкреЛрд▓реЙрдЬрд┐рдХрд▓' рдСрд░реНрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рднреА рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рд╣реИред

рдореИрдВ рдпрд╣рд╛рдВ "рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ" рд╢рдмреНрдж рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рдХреНрд╖реНрдп рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢рд╛рдпрдж рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ (https://github.com/Microsoft/TypeScript/issues/3469#issuecomment-341317069) рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдмрд╣реБрдд рдмрд╛рд░ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рдорд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдХрдИ рдЯреАрдПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рд╣реИ, рдЗрд╕реЗ рдореВрд▓ рд░реВрдк рд╕реЗ common-library рдкреНрд▓рд╕ рдХреБрдЫ рдРрдкреНрд╕ рддрдХ рдШрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: app1 рдФрд░ app2 ред рдЖрдИрдбреАрдИ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд╛рдо рдмрджрд▓реЗрдВ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рд╕рднреА рддреАрди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди app1 рдФрд░ app2 рднреА рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрдорд╛рдг рд▓рдХреНрд╖реНрдп рд╣реИрдВред рдЬрдмрдХрд┐ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдмрд┐рд▓реНрдб рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдЪрд┐рдВрддрд╛ рд╣реИ, рд╕рдЪреНрдЪрд╛рдИ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдРрдкреНрд╕ рдХрд╛рдлреА рдЫреЛрдЯреЗ рд╣реИрдВ рдФрд░ cd app1 && tsc рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд▓реЗрдХрд░ рдЖрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдореЛрдиреЛрд░реЗрдкреЛ рдХреНрд░реЙрд╕-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ/рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣ рд╕реЗрдЯрдЕрдк рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдмрдирд╛рдо рдХреЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

рд░реВрдЯ tsconfig:

"compilerOptions": {
   "baseUrl": ".",
   // global types are different per project
   "types": [],
   "paths": {
      "lib": ["packages/lib/src"],
      "xyz1": ["packages/xyz1/src"],
      "xyz2": ["packages/xyz2/src"],
   }
},
"include": ["./stub.ts"], // empty file with export {} to stop vscode complaining about no input files
"exclude": ["node_modules"]

рд╕рдВрдХреБрд▓/xyz1/tsconfig.json

{
  "extends": "../../tsconfig",
   "compilerOptions": {
      "types": ["node"],
   },
   "include": ["src/**/*"]
}

рд╕рдВрдХреБрд▓/xyz2/tsconfig.json

{
  "extends": "../../tsconfig",
   "compilerOptions": {
      "types": ["webpack-env"]
   },
  "include": ["src/**/*"]
} 

рд╕рдВрдХреБрд▓/lib/tsconfig.json

{
   "extends": "../../tsconfig",
    "compilerOptions": { ... },
    "include": ["src/**/*"],
    // special file to load referenced projects when inside in lib package, without it they won't be 
    // visible until you open some file in these projects 
    "files": ["./references.ts"],
}

рд╕рдВрдХреБрд▓/lib/tsconfig-build.json

{
   "extends": "./tsconfig",
    // exclude referenced projects when building
   "files": []
}

рд╕рдВрдХреБрд▓/lib/references.ts

import "xyz1";
import "xyz2";

export {};

рдЖрдкрдХреЛ рдкреИрдХреЗрдЬ рдХреЗ package.json рд╕рд╣реА main рд╕рдВрдкрддреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдиреЛ-рд▓рд┐рдм рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рднреА types рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  "main": "src/main.tsx",
  "types": "src/main.tsx",

рдЗрд╕ рддрд░рд╣ lib рдореЗрдВ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ/рдирд╛рдо рдмрджрд▓рдиреЗ рд╕реЗ xyz1 рдФрд░ xyz2 рдореЗрдВ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рднреА рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧреНрд▓реЛрдмрд▓/рд▓рдХреНрд╖рд┐рдд libs рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдЧреНрд░реИрдбрд▓ рдореЗрдВ, рд╡реЗ рдмрд╕ рдЗрд╕реЗ - рд╕рдордЧреНрд░ рдирд┐рд░реНрдорд╛рдг рдХрд╣рддреЗ рд╣реИрдВ ред

рд╡реИрд╕реЗ, рдЕрдЧрд░ рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдХреНрдпрд╛ рдореБрдЭреЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдореИрдВрдиреЗ рд░реЗрдкреЛ рдХреЛ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреЛрдИ рдЫреЛрдЯреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ (рдореИрдВ рд╕реНрд░реЛрдд рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: рдХреЛрдгреАрдп, рдЖрдпрдирд┐рдХ, рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдЬрдм рдореИрдВ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдпрд╛ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рджреВрд░ рд╣реВрдВ ...) рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реЗ рдорджрдж рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдореБрдЭреЗ рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ред

рдзрдиреНрдпрд╡рд╛рдж!
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдЬреНрдЬреНрд╡рд▓ рднрд╡рд┐рд╖реНрдпред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ рдЬреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд▓реЛрдЧ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рд╡реЗ рд╕рд╛рдкреЗрдХреНрд╖ рдореЙрдбреНрдпреВрд▓ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред https://github.com/RyanCavanaugh/project-references-demo рдкрд░ рдПрдХ рдирдореВрдирд╛ рд░реЗрдкреЛ рд╣реИ рдЬреЛ рдореВрд▓ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

git clone https://github.com/RyanCavanaugh/TypeScript
git checkout pr-lkg
npm install
npm run build
npm link

рдлрд┐рд░ рдЕрдкрдиреЗ рджреВрд╕рд░реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ:

npm link typescript

рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЪреАрдЬреЗрдВ рдмрджрд▓рддреА рд╣реИрдВ, рдореИрдВ pr-lkg рдЯреИрдЧ рдХреЛ рдирд╡реАрдирддрдо рд╡рд░реНрдХрд┐рдВрдЧ рдХрдорд┐рдЯ рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд░рд╣реВрдВрдЧрд╛ред рдореЗрд░реЗ todos рдкрд░ рдЕрдЧрд▓рд╛:

  • [x] рдЖрд╢реНрд░рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рди рд╣реЛрдиреЗ рдкрд░ рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝реЗрдВ
  • [ ] рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЧреИрд░-рд╕рд╛рдкреЗрдХреНрд╖ рдореЙрдбреНрдпреВрд▓ рдкрдереЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
  • [ ] рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рдХрд╛ рдкрд░реНрджрд╛рдлрд╛рд╢ рдХрд░реЗрдВ

@RyanCavanaugh рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ del рдореЙрдбреНрдпреВрд▓ рдпрд╛ Error: Cannot find module 'C:\github\TypeScript\built\local\tsc.js' (рд╢рд╛рдпрдж рдЖрдкрдХрд╛ рд╕реНрдерд╛рдиреАрдп рдкрде?)

рдХреНрдпрд╛ рдпрд╣ рдХреЗрд╡рд▓ tsc рдпрд╛ рдпрд╣ рднрд╛рд╖рд╛ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде VSCode рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рд╡рд╛рдЗрдб рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рднреА рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛?

...рднреА pr-lkg рдЯреИрдЧ рдЧрд╛рдпрдм рд╣реИред

рдЯреИрдЧ рд╡рд╣рд╛рдБ рд╣реИ (рдпрд╣ рдПрдХ рд╢рд╛рдЦрд╛ рдирд╣реАрдВ рд╣реИ)ред рджреЗрдЦреЗрдВ https://github.com/RyanCavanaugh/TypeScript/tree/pr-lkg

references рдореЗрдВ tsconfig.json рдСрдкреНрдЯ-рдЗрди рдкреНрд░рддрд┐-рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕реЗ rootDir рдмрд╛рд╣рд░ рд╣рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬрд╝ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛?

рдореИрдВ sandbox рд╕рдВрдкрддреНрддрд┐ рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд▓реНрдкрдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

# tsconfig.json
{
  "compilerOptions": {
    "outDir": "lib",
    "sandbox": "."
  },
  "include": ["src/index.ts"]
}

рд╕реИрдВрдбрдмреЙрдХреНрд╕ рднреА рдЙрд╕реА рдорд╛рди рдкрд░ rootDir рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ред tsconfig.json рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрде рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╕рд╛рдорд╛рдиреНрдп рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛, рдФрд░ рдЖрдк tsconfig.json рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП FS рдЯреНрд░реА рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВред

# package.json
{
  "name": "animals",
  "module": "src",
  "typings": "lib",
  "dependencies": {
    "core": "*"
  }
}

рдЗрд╕ рддрд░рдл:

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

@RyanCavanaugh , рдЬрд╣рд╛рдБ рддрдХ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдБ, рдореИрдВ рдХреЗрд╡рд▓ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ рдФрд░ рдореИрдВ рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рднреЗрдЬ рдкрд╛рдКрдБрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, travis-ci.org рдкрд░ред рд╕рд╣реА?

@billti / @mhegazy . рдХреЗ рд╕рд╛рде рдЖрдЬ рдХреА рдмреИрдардХ рдХреЗ рдиреЛрдЯреНрд╕


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

рд╕рд╛рдЗрдбрдмрд╛рд░: рдпрд╣ рдирд╛рдо рдЖрдЬ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛

function f() {
  if (Math.random() > 0.5) {
    return { foo: 10 };
  } else {
    return { foo: 20 };
}
// rename foo here doesn't rename *both* instances in the function body
f().foo;

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

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЖрдкрдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдХреЛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдЖрдк рдХрдорд╛рд▓ рдХрд╛ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд▓рд░реНрди/рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рддрд░рдХреАрдм рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧреАред
рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ main рдФрд░ types рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ src/index рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред ts рдлрд╝рд╛рдЗрд▓, рдФрд░ рд╕рдВрджрд░реНрдн рдЦреЛрдЬреЗрдВ/рдирд╛рдо рдмрджрд▓реЗрдВ рдкрд░рд┐рджреГрд╢реНрдп рдмрд╕ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдФрд░ рдЖрдк рдЕрдкрдиреЗ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ tsc рд░рдирд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред
рдЖрдк рдЕрдкрдиреЗ рдХреБрдЫ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рд╕рднреА рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХрд╛ рдлреЛрдиред

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

рдЙрдкрд░реЛрдХреНрдд рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдХрдореЛрдмреЗрд╢ рд╕рднреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдорд┐рд▓реАрдВ

рдпрд╣рд╛рдБ рд▓рд░реНрди/рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рддрд░рдХреАрдм рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧреАред
рдЙрдк рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдЕрдкрдиреЗ package.json рдореЗрдВ рдореБрдЦреНрдп рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреА src/index.ts рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ, рдФрд░ рд╕рдВрджрд░реНрдн рдЦреЛрдЬреЗрдВ/рдирд╛рдо рдмрджрд▓реЗрдВ рдкрд░рд┐рджреГрд╢реНрдп рдмрд╕ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

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

  • рдмрд╛рд╣рд░реА рдкреИрдХреЗрдЬ рдХрдИ рдмрд╛рд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╣рд░ рдмрд╛рд░ _requiring_ рдкреИрдХреЗрдЬ рдХреЗ tsconfig рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ tsconfigs (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ libs) рд╣реИрдВ, рддреЛ рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдиреЗ рддрдХ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдкрд░ рдЭреВрдареА рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред

  • рд╕рдВрдХреБрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рднреА рдзреАрдореА рдЧрддрд┐ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВред

  • рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ rootDir рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдкреИрдХреЗрдЬ рд╕реЗ рдХрд┐рд╕реА рднреА TS рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реАрдзреЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрдЬрд╛рдп рдХреЗрд╡рд▓ index ред рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рд╛рд╡рдзрд╛рди рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╡реЗ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдПрдкреАрдЖрдИ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдордЬрдмреВрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдмрд╛рд╣рд░реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ред

рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╣рдордиреЗ рдХрдорд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЯреАрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрдирдХрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред рд╕рднреА рдЗрдВрдЯрд░-рдкреИрдХреЗрдЬ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ index.d.ts рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рдЙрдиреНрд╣реЗрдВ рдмрд╛рд╣рд░реА рдорд╛рдирддрд╛ рд╣реИ рдФрд░ рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИред

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

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

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

рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдкрддрд┐рдд рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

// alpha.ts
const v = { a: 1 };
export function f() { return v; }
export function g() { return v; }

// alpha.d.ts (generated)
export function f(): { a: number };
export function g(): { a: number };

// beta.ts (in another project)
import { f } from '../etc/alpha';
f().a;

// gamma.ts (in yet another project)
import { g } from '../etc/alpha';
g().a;

рдХреБрдВрдЬреА рдЕрд╡рд▓реЛрдХрди рд╣реИ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдирд╛рдо рдмрджрд▓рдиреЗ рдЕрд╕рдВрднрд╡ рд╣реИ f().a рдирд╛рдо рдмрджрд▓рдиреЗ рдЪрд╛рд╣рд┐рдП g().a рдЬрдм рддрдХ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ alpha.ts рджреЛ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдореЛрдЯрд╛ рд╕реНрдХреЗрдЪ:

  • "рд╕рдореГрджреНрдз" рдФрд░ "рджреБрдмрд▓рд╛" рдЗрди-рдореЗрдореЛрд░реА рд╕реЛрд░реНрд╕рдлрд╛рдЗрд▓ .d.ts рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред "рд▓реАрди" рдлрд╝рд╛рдЗрд▓реЗрдВ рдбрд┐рд╕реНрдХ рд╕реЗ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИрдВ; рдЗрди-рдореЗрдореЛрд░реА .d.ts рдЬрдирд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк "рдЕрдореАрд░" рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ
  • "рд░рд┐рдЪ" .d.ts SourceFiles рдореЗрдВ рдЙрдирдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдиреЛрдбреНрд╕ рд╕реЗ рдореВрд▓ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореВрд▓ рдирд╛рдо [s] рдХреЗ рд╕рдВрджрд░реНрдн рд╣реИрдВ
  • рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди, рд╣рдо рдкрд╣рд▓реЗ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдкреНрд░рддреАрдХ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рд╕рдВрджрд░реНрднрд┐рдд .d.ts рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ-рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА "рд░рд┐рдЪ" .d.ts рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ

    • рдиреЛрдЯ: рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣реИ, рдпрд╛рдиреА рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдиреЗ рддрдХ рдХрдИ рд╕реНрддрд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдПрдХ рдЬреЛ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн рдХреЗ рдХрд╛рд░рдг .d.ts рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ)

  • рдЕрдм рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рд░рд┐рдЪ" рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ .d.ts рдореЗрдВ рдХреМрди рд╕реЗ рдЕрдиреНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕рдорд╛рди рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ
  • рдкреНрд░рддреНрдпреЗрдХ рдмрд╣рд╛рд╡ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдкрд╛рда рд╕реНрдХреИрди рдирд╛рдо рдмрджрд▓реА рдЧрдИ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдЧрд░ рджреЗрдЦрдирд╛ рдЕрдкрдиреЗ "рдЬрд╛рдирд╛-рдЯреВ-def" рдкрд░рд┐рдгрд╛рдо .d.ts рдореЗрдВ "рдПрдХ рд╣реА рдкреНрд░рддреАрдХ рд╕реЗ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛" рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рд╣реИ
  • рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд╛рдо рдмрджрд▓реЗрдВ

@RyanCavanaugh рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдЬрд╛рдПрдЧрд╛ / рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ

рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЦреБрд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдПрдВрдбрд░реНрд╕ рдФрд░ рдореЛрд╣рдореНрдордж рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рдиреЛрдЯреНрд╕

  • рдХреНрдпрд╛ prepend рднреА .d.ts рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ? рд╣рд╛рдВ
  • рд╣рдо dogfood рд╢рд╛рдЦрд╛ рдореЗрдВ @internal рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ? рд╣рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдп .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рд╡реЗ рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВ

    • --stripInternal рдирд┐рдХрд╛рд▓реЗрдВ

    • рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рди рдХрд░реЗрдВ (рдЕрднреА рддрдХ...?)

    • рд░рдпрд╛рди remove-internal рдЯреВрд▓ рд▓рд┐рдЦреЗрдВрдЧреЗ (рдбреЛрдирд┐рд╢)

    • рдирд┐рд░реНрдорд┐рдд -> рдПрд▓рдХреЗрдЬреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ @internal рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИ

  • рдпрджрд┐ рдЖрдк .d.ts рдлрд╝рд╛рдЗрд▓ рдХреЛ @types рд╕реЗ рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

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

    • рдЕрдЧрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЕрдВрддрддрдГ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ "рдлрд╛рдЗрд▓реЗрдВ рдореИрдВрдиреЗ рджреЗрдЦрд╛ред txt" рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ

  • рдХреНрдпрд╛ noEmitOnError рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ? рд╣рд╛рдВред

    • рдЕрдиреНрдпрдерд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЫреБрдкрд╛рдПрдЧрд╛!

  • referenceTarget -> composable
  • рд▓реАрдл-рдиреЛрдб рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдЬреЛ рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддреЗрдЬреА рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

    • tsbuild рдпрд╛ рд╕рдордХрдХреНрд╖ composable рдХреА рдЧреИрд░-рдЕрдкрд╕реНрдЯреНрд░реАрдо-рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

  • рдкрд░рд┐рдкрддреНрд░ рд╕рдВрджрд░реНрдн, (рдХреИрд╕реЗ) рд╡реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ?

    • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдирд╣реАрдВ

    • рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП { path: "../blah", circular: true } рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

    • рдпрджрд┐ рдЖрдк рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд┐рдпрддрд╛рддреНрдордХ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ (рд╕рдВрднрд╡рддрдГ рдпрд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ?!)

    • рд╕рд░реНрдХреБрд▓рд░ рдХрд╛ рд░реАрдореИрдкрд┐рдВрдЧ рд╡реИрдХрд▓реНрдкрд┐рдХ (рд▓реЗрдХрд┐рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓рд╛) рд░реАрдореИрдк рд╣реИ

рдорд┐рд╢реНрд░рдг

  • @weswigham рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рд╣рдореЗрдВ @mhegazy . рдХреЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

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

@RyanCavanaugh
#реирейрепрекрек рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рднреА рд╕рдВрджрд░реНрднрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛/рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рд╣рдореЗрдВ composite: true рдФрд░ projectReferences: [] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдХреЗрд╡рд▓ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛рдУрдВ (рд▓реЗрдХрд┐рди tsbuild рдирд╣реАрдВ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

#реирейрепрекрек рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рднреА рд╕рдВрджрд░реНрднрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛/рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЕрднреА рддрдХ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдкрд░ рдЖрдЧреЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреНрдпрд╛ рд╣рдореЗрдВ рд╕рдордЧреНрд░: рд╕рддреНрдп рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн: [] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдХреЗрд╡рд▓ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛рдУрдВ (рд▓реЗрдХрд┐рди tsbuild рдирд╣реАрдВ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ .. рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ "рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛" рдФрд░ "рдирд┐рд░реНрдорд╛рдг" рдирд╣реАрдВ?

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ .. рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ "рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛" рдФрд░ "рдирд┐рд░реНрдорд╛рдг" рдирд╣реАрдВ?

рдореИрдВ рдХреЗрд╡рд▓ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рдВрдкрд╛рджрдХ рд╕рдорд░реНрдерди (рдирд╛рдо рдмрджрд▓реЗрдВ/рд╕рднреА рд╕рдВрджрд░реНрдн/рдЖрджрд┐...) рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрддрд╛ рд╣реВрдВ, рдирдП рдмрд┐рд▓реНрдб рдЯреВрд▓ рдореЗрдВ рдирд╣реАрдВ (рдЙрд░реНрдл build mode ) (#22997) рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдореЗрд░реЗ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдмреЗрдмрд▓ред

рдмрд╕ рдпрд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд┐рд▓реНрдб рдПрдХ рдСрдкреНрдЯ-рдЗрди рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ .. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП VSCode рдореЗрдВ рдЖрдкрдХреЗ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП tsc рд╕рдорд╛рди рдХреИрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрд░реЙрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реЗрдлрд░реА рдХреЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдШреЛрд╖рдгрд╛рдУрдВ рдФрд░ рдШреЛрд╖рдгрд╛ рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рджреВрд╕рд░реЛрдВ рдХреЛ рдкрде рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рди рдХрд░реЗрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдирд╛рдо рд╕реЗ? рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрде рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЧреНрд▓рдмреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рдХреЗ рд╕рдорд╛рди, рдпрд╛ рд╢рд╛рдпрдж рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╛рдо рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдХреЗ:

рдореВрд▓ рд░реВрдк рд╕реЗ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп:

"dependencies": [
    "../common", 
    "../util"
],

рдХреНрдпрд╛ рд╣рдо рдХреГрдкрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

"dependencies": [
    "common", 
    "util"
],

рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╣реИ tsconfig.json

"workspace": {
  "common": "packages/common",
  "util": "packages/util"
}

рдпрд╛ рдмреЗрд╣рддрд░ рдЕрднреА рддрдХ, рдкрде рд╕рд┐рдВрдЯреИрдХреНрд╕:

"workspace": {
  "*":"packages/*"
}

рд▓рд╛рдн:

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

рдпрд╛ рдХрдо рд╕реЗ рдХрдо, рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧреИрд░-рдкрде рдирд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреЛ './' рдпрд╛ '../' рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ) рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рд╣реИрдВ ...

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

рдХреНрдпрд╛ рдпрд╣рд╛рдВ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рдХрд╛рдо рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ @RyanCavanaugh рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн/рдмрд┐рд▓реНрдб рдореЛрдб рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╢рд╛рдпрдж рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ? рдореЗрд░реА рдЖрдВрдд рдХреА рднрд╛рд╡рдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ _somewhere_ (рдПрдирдкреАрдПрдо рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рд╡рд░реНрд╖ рднреА рдорд┐рд▓реЗрдЧрд╛) рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд░реНрдерди рд╣реИред (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рджрд░реНрдж рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВред)

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

рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рд╕рдорд░реНрдерди рдХреЛрд░ рд╕рдорд░реНрдерди рдФрд░ рдЧреЛрдЯреЛ рдбреАрдИрдПрдлрд╝ рдХреЛ рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬрд╝ (рдЯреАрдПрд╕ 2.9) рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред tsc --b рдмрд┐рд▓реНрдб рд╕рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ рдФрд░ TS 3.0 рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИред рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдХреЛрдб рдЖрдзрд╛рд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реЗрдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд░реНрдерди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЕрднреА рднреА рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: 1. рдмрд╣реБ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрджрд░реНрдн рдЦреЛрдЬреЗрдВ/рдирд╛рдо рдмрджрд▓реЗрдВред 2. рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛, рдФрд░ 3. рдмрд╣реБ-рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП --watch рд╕рдорд░реНрдердиред рдмрд╣реБрдд рд╕рд╛рд░реЗ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рднреАред

рдпрд╣ рдЯрд┐рдХрдЯ 3 рд╕рд╛рд▓ рд╕реЗ рдЙрд╕рдХреА рдХрд┐рддрд╛рдмреЛрдВ рдкрд░ рд╣реИред рдЕрднреА рднреА 3/6 рдмрдХрд╛рдпрд╛ рдЖрдЗрдЯрдо?

@claudeduguay рдпрд╣ рдПрдХ рдореМрд▓рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд╢реНрди рдордирд╛рдиреЗ рдХрд╛ рд╕рдордп рдХреНрдпрд╛ рдЖрдкрдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛? рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдЦреБрд╢ рд╣реВрдВ!

@mhegazy рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред рдореБрдЭреЗ рдпрд╣ рд╕реБрдирдХрд░ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реБрдИ рдХрд┐ TS рдЯреАрдо рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рднреА рдбреЙрдЧрдлреВрдб рдХрд░ рд░рд╣реА рд╣реИред рдкрд┐рдЫрд▓реА рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдФрд░ рдЗрд╕реЗ рдСрд░реЗрд▓рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ :) рдЬреИрд╕реЗ рд╣реА рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛрдВрдЧреЗ, рд╣рдо рдЕрдкрдиреЗ vNext рдХреЛ рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛!

@mhegazy рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд╢ @aurelia/kernel , @aurelia/runtime , @aurelia/jit рдЖрджрд┐ рдЬреИрд╕реЗ рдкреИрдХреЗрдЬ рд╣реИрдВред рд╡реЗ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ import рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рджреМрд░рд╛рди рдмрдпрд╛рдиред TS рдХрдВрдкрд╛рдЗрд▓рд░ рдХреИрд╕реЗ рд╕рдордЭреЗрдЧрд╛ рдХрд┐ рдпреЗ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднрд┐рдд рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдореИрдк рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджрд░реНрднрд┐рдд рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреА package.json рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрдард╛рдПрдЧрд╛? рдпрд╣ Lerna рдпрд╛ Yarn Workspaces рд╕реЗ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рднрд┐рдиреНрди рд╣реЛрдЧрд╛? рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдореЗрдВ рдореЗрд░рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдк рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд░реНрдирд╛ (рдбрд┐рдк рд▓рд┐рдВрдХрд┐рдВрдЧ рдФрд░ рдкреНрд░рдХрд╛рд╢рди) рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЯреАрдПрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ (рдмрд┐рд▓реНрдб) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЯреАрдПрд╕ рдХреИрд╕реЗ рдареАрдХ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ package.json рдФрд░ node_modules рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред TS рд░реЗрдкреЛ рд╕реНрд░реЛрдд рдЖрдкрдХреЗ рдФрд╕рдд Lerna рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ) рд╕реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдиреЗ рд▓рдЧрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдХреЛрдИ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛ рдЖрдк рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ espред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЬреЛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдХреЗ рд╕рдорд╛рди рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдбреЗрдореЛ рд╕рдорд╛рдзрд╛рди рд╕реЗрдЯрдЕрдк рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ @EisenbergEffect рдХреЗ рд╕рдорд╛рди рдкреНрд░рд╢реНрди рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореИрдВ рдпрд╣ рднреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ lerna -рдкреНрд░рдмрдВрдзрд┐рдд рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдореЛрдиреЛрд░реЗрдкреЛ рдкрд░рд┐рджреГрд╢реНрдп

рдЖрдЗрдП рдПрдХ рд╕реЗрдЯрдЕрдк рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЖрдкрдиреЗ рд▓рд░реНрди рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рд╣реИ:

/packages
  /a
    /node_modules
      /b -> symlink to b with package.json "types" pointing to dist/index.d.ts
  /b
    /dist
      /index.d.ts -> built output of entry point declaration file

рд╣рдо рдпрд╣рд╛рдВ рдЬреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣ рд╣реИ b рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛, рд╣рдордиреЗ a рдпрджрд┐ a рдкреБрд░рд╛рдирд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо "references": [ { "path": "../b" } ] рдХреЛ a рдХреЗ tsconfig.json рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ рдФрд░ tsc --build рдореЗрдВ a рдЪрд▓рд╛рдПрдВрдЧреЗ рддрд╛рдХрд┐ b рдХрд╛ рд╕рд╣реА рдЕрдкрд╕реНрдЯреНрд░реАрдо рдмрд┐рд▓реНрдб рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХреЗред package.json рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ tsconfig.json рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЙрдкрдпреБрдХреНрдд рд╣реЛред

рдПрдХ рдФрд░ рдкрд░рд┐рджреГрд╢реНрдп (рд╢рд╛рдпрдж рдХрдо рдЖрдо) рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рд╕рд┐рдореНрд▓рд┐рдВрдХрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рдереЗ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА "рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ" рдЬреИрд╕реЗ рдЖрдк рдкреИрдХреЗрдЬ рдХреЗ рд▓рд╛рдЗрд╡ рд╕реЗрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдереЗред рдЖрдк рдЗрд╕реЗ рдЖрдЬ рдХреБрдЫ рдХрд╛рдлреА рдХрдард┐рди рдкрде рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рд▓реЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдСрд░реНрдбрд░рд┐рдВрдЧ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЬрдм рднреА рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрде рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн tsconfig рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реЛрдирд╛ рдмрд╣реБрдд рд╡рд╛рдВрдЫрдиреАрдп рд╣реЛрдЧрд╛; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдерд╛

{
  "compilerOptions": { "outDir": "bin" },
  "package": "@RyanCavanaugh/coolstuff"
}

рдлрд┐рд░ "references": [{ "path": "../cool" }] рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ @RyanCavanaugh/coolstuff -> ../cool/bin/ рд╕реЗ рдкрде рдореИрдкрд┐рдВрдЧ рдЬреБрдбрд╝ рдЬрд╛рдПрдЧреАред рд╣рдордиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рджреГрд╢реНрдп рд╣реЛ рддреЛ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдмрд╛рд╣рд░реА рдЯреВрд▓рд┐рдВрдЧ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдЖрдкрдХреЗ package.json (рдмрд╢рд░реНрддреЗ рдпрд╣ рдЖрдкрдХреЗ tsconfig рдХреЗ рд╕рд╛рде рд╣реЛ) рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ composite: true рд╕реЗрдЯ рд╣реИ (рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рд╣рд▓ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдореЗрдВ tsconfig.json , рдЕрдЧрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдмрд┐рд▓реНрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдиреЛрдб рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ)ред рдЪреВрдВрдХрд┐ рд╕рдм рдХреБрдЫ рдЬрдЧрд╣ рдореЗрдВ рд╕рд┐рдореНрд▓рд┐рдВрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓реНрдк (рдмрд╣реБрдд? рдХреЛрдИ?) рдХреЛ рдмрджрд▓рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓рд░реНрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЯреАрдПрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ (рдпрд╛ рдмрд┐рд▓реНрдб-рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХ) рд╕рд╛рдорд╛рди рдХреЛ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ afaik рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рд╕рдм рдХреБрдЫ рдЬрдЧрд╣ рдореЗрдВ рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдЬ рд╣рдо рдЬреЛ рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕ рдкрд░ рдПрдХ рдЕрдиреБрдХреВрд▓рди рд╣реЛрдЧрд╛, рдЬреЛ ts рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ (рдЪреВрдВрдХрд┐ рд╣рдо рдЙрди рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рдкреБрд░рд╛рдиреА рд╣реЛрдиреЗ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдм рдХреБрдЫ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

@RyanCavanaugh рдпрд╣ рдмрд╣реБрдд рд░реЛрдорд╛рдВрдЪрдХ рд▓рдЧрддрд╛ рд╣реИред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдЕрдЧрд░ рдпрд╣ рд░рд╢ рдХреА рд╕рд┐рдореНрд▓рд┐рдВрдХрд┐рдВрдЧ рд░рдгрдиреАрддрд┐ рд╕рд╛рдорд╛рдиреНрдп/temp/package.json рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдкреИрдХреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд░реЗрдкреЛ рдореЗрдВ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рд╕реБрдкрд░рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдо рдЗрд╕ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЧрд▓ рдЗрдВрд╕реНрдЯрд╛рд▓ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pnpm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред (рдкреАрдПрдирдкреАрдПрдо рдПрдирдкреАрдПрдо рдХреА рдЯреНрд░реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдд-рдПрд╕рд╛рдЗрдХреНрд▓рд┐рдХ-рдЧреНрд░рд╛рдл рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдореНрд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ)ред рдлрд┐рд░ рд░рд╢ рд░реЗрдкреЛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп/рдЕрд╕реНрдерд╛рдпреА рдХреЗ рддрд╣рдд рдЙрдкрдпреБрдХреНрдд рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рдореНрд▓рд┐рдВрдХ рд╕реЗ рдмрдирд╛ рд╣реЛрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдорд╛рдирдХ NodeJS рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИред рдпрд╣ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реЗ рд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдХреБрдбрд╝рди рдлрд╝рд╛рдЗрд▓ рдФрд░ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╕рдореАрдХрд░рдг рд╣реИ, рдЬрдмрдХрд┐ рдЕрднреА рднреА рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рд╣реИред

рд╣рдо рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП tsconfig.json рдореЗрдВ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред рдпрджрд┐ рдЧреЛрдЯреЛ-рдбреЗрдлрд┐рдирд┐рд╢рди рдлреАрдЪрд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЧрд┐рдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЗ рджреМрд░рд╛рди рд╕реНрд╡рдд: рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@pgonzal рд░рд╢ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рджреЗрдЦрд╛ рдерд╛ред рдореИрдВ рдЖрдЬ рд░рд╛рдд рдЗрд╕реЗ рджреЗрдЦ рд▓реВрдВрдЧрд╛ред

@RyanCavanaugh рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд▓рд░реНрди рдХреЗ рд╕рд╛рде рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рдкрд░рд┐рджреГрд╢реНрдп рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдмрд╕реЗ рдХрд░реАрдм рд╣реИред рдпрд╣рд╛рдБ TS рдФрд░ lerna рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░рд╛ UX рд░реЗрдкреЛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо https://github.com/aurelia/ux рдкрд░ рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдорд░реНрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@weswigham рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬреЛ рд╡рд░реНрдгрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╣рдорд╛рд░реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рднреА рдлрд┐рдЯ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рд░реЗрдкреЛ рдКрдкрд░ред

рдмрд╕ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреИрдХреЗрдЬ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рд┐рдорд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рд┐рдорд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВ node_modules ред

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджрд░реНрдн рдЬреЛ рдПрдХ рдмрд┐рдВрджреБ ('./' рдпрд╛ '../') рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╡реЗ "рдирд╛рдорд┐рдд рд╕рдВрджрд░реНрдн" рд╣реЛрдВрдЧреЗ, рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдХреНрд░рд┐рдп рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд░рдгрдиреАрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛ред

@spion рд╣рдо рдЬрд░реВрд░рдд path рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "references": [ { "module": "@foo/baz" } ] ); рдореИрдВ рднреНрд░рдо рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдЬрд┐рд╕рдореЗрдВ "bar" рдФрд░ "./bar" рдорддрд▓рдм files рдореЗрдВ рдПрдХ рд╣реА рдмрд╛рдд рд╣реИ рд▓реЗрдХрд┐рди references рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдмрд╛рдд рд╣реИ

рдиреАрдЪреЗ рдбреЙрдХреНрд╕/рдмреНрд▓реЙрдЧрдкреЛрд╕реНрдЯ рдХрд╛ рдХрд╛рд░реНрдп рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ (рдлрд╝реАрдбрдмреИрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗ)

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


рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.0 рдореЗрдВ рдПрдХ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ, рдЖрдк рдмрд┐рд▓реНрдб рд╕рдордп рдореЗрдВ рдмрд╣реБрдд рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рддрд╛рд░реНрдХрд┐рдХ рдЕрд▓рдЧрд╛рд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдирдП рдФрд░ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо tsc , --build рдзреНрд╡рдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореЛрдб рднреА рдкреЗрд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рддреЗрдЬреА рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд┐рд▓реНрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде рд╣рд╛рде рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛

рдЖрдЗрдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреИрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн рд╣рдореЗрдВ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, converter рдФрд░ units , рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓:

/src/converter.ts
/src/units.ts
/test/converter-tests.ts
/test/units-tests.ts
/tsconfig.json

рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддреА рд╣реИрдВ рдФрд░ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреА рд╣реИрдВ:

// converter-tests.ts
import * as converter from "../converter";

assert.areEqual(converter.celsiusToFahrenheit(0), 32);

рдкрд╣рд▓реЗ, рдпрджрд┐ рдЖрдк рдПрдХ tsconfig рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рдереА:

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

рдЖрдк рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ tsconfig рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирдП рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ:

  • рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрдк-рдЯреВ-рдбреЗрдЯ рдЬрд╛рдБрдЪ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╣рдореЗрд╢рд╛ tsc рджреЛ рдмрд╛рд░ рдЪрд▓рддреЗ рд╣реИрдВ
  • tsc рджреЛ рдмрд╛рд░ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдЕрдзрд┐рдХ рд▓рдЧрддрд╛ рд╣реИ
  • tsc -w рдПрдХ рд╕рд╛рде рдХрдИ рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддрд╛

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн рдЗрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн рдХреНрдпрд╛ рд╣реИ?

tsconfig.json рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдХ рдирдИ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд╕рдВрдкрддреНрддрд┐ рд╣реИ, references ред рдпрд╣ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ рдЬреЛ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИ:

{
    "compilerOptions": {
        // The usual
    },
    "references": [
        { "path": "../src" }
    ]
}

рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджрд░реНрдн рдХреА path рд╕рдВрдкрддреНрддрд┐ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ tsconfig.json рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдпрд╛ рд╕реНрд╡рдпрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ (рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рднреА рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред

рдЬрдм рдЖрдк рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдирдИ рдЪреАрдЬрд╝реЗрдВ рд╣реЛрддреА рд╣реИрдВ:

  • рдХрд┐рд╕реА рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХреА рдЖрдЙрдЯрдкреБрдЯ рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ ( .d.ts ) рд▓реЛрдб рд╣реЛрдЧреА
  • рдпрджрд┐ рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ outFile рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ .d.ts рдлрд╝рд╛рдЗрд▓ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА
  • рдмрд┐рд▓реНрдб рдореЛрдб (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛

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

composite

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

  • rootDir рд╕реЗрдЯрд┐рдВрдЧ, рдпрджрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ tsconfig рдлрд╝рд╛рдЗрд▓ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ
  • рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди include рдкреИрдЯрд░реНрди рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ files рд╕рд░рдгреА рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЗрд╕ рдмрд╛рдзрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ tsc рдЖрдкрдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреМрди-рд╕реА рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХреА рдЧрдИ рдереАрдВ
  • declaration рдЪрд╛рд▓реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

declarationMaps

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

prepend рд╕рд╛рде outFile

рдЖрдк рд╕рдВрджрд░реНрдн рдореЗрдВ prepend рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкреНрд░реАрдкреЗрдиреНрдб рдХрд░рдирд╛ рднреА рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

   "references": [
       { "path": "../utils", "prepend": true }
   ]

рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдКрдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред
рдпрд╣ .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рднреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрдВрдЧреАред

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

  ^ ^ 
 /   \
B     C
 ^   ^
  \ /
   D

рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝реЗрдВ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХреА рджреЛ рдкреНрд░рддрд┐рдпрд╛рдВ рд╕рд╛рде рдЦрддреНрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛ A рдХреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ D - рдЗрд╕ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА

рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдХреБрдЫ рдЯреНрд░реЗрдб-рдСрдл рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдЕрд╡рдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдореМрдЬреВрджрд╛ рдмрд┐рд▓реНрдб рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, tsc рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ --build рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЗрдП --build рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдиреЗрдВред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдореЛрдб

рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдорд╛рд░реНрдЯ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдмрд┐рд▓реНрдб рд╣реИред
3.0 рдореЗрдВ рдЖрдк --build рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ tsc ред
рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ tsc рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИ рдЬреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд┐рд▓реНрдб рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред

tsc --build ( tsc -b рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ) рдЪрд▓рд╛рдирд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛:

  • рд╕рднреА рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрдЬреЗрдВ
  • рдкрддрд╛ рд▓рдЧрд╛рдПрдБ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЕрдк-рдЯреВ-рдбреЗрдЯ рд╣реИрдВ
  • рдкреБрд░рд╛рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдмрдирд╛рдПрдВ

рдЖрдк tsc -b рдПрдХрд╛рдзрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдкрде (рдЙрджрд╛рд╣рд░рдг tsc -b src test ) рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
tsc -p , рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕реНрд╡рдпрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ рдпрджрд┐ рдЗрд╕рдХрд╛ рдирд╛рдо tsconfig.json ред

tsc -b рдХрдорд╛рдВрдбрд▓рд╛рдЗрди

рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 > tsc -b                                # Build the tsconfig.json in the current directory
 > tsc -b src                            # Build src/tsconfig.json
 > tsc -b foo/release.tsconfig.json bar  # Build foo/release.tsconfig.json and bar/tsconfig.json

рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рдкрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ - tsc рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдСрд░реНрдбрд░ рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ рдмрдиреА рд░рд╣реЗред

tsc -b рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреБрдЫ рдЭрдВрдбреЗ рднреА рд╣реИрдВ:

  • --verbose : рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдмреЛрдЬрд╝ рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ (рдХрд┐рд╕реА рдЕрдиреНрдп рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
  • --dry : рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ
  • --clean : рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ ( --dry рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
  • --force : рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВ рдЬреИрд╕реЗ рдХрд┐ рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреБрд░рд╛рдиреЗ рд╣реИрдВ
  • --watch : рд╡реЙрдЪ рдореЛрдб ( --verbose рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд┐рд╕реА рднреА рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)

рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ

рдЖрдо рддреМрд░ рдкрд░, tsc рд╕рд┐рдВрдЯреИрдХреНрд╕ рдпрд╛ рдЯрд╛рдЗрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ ( .js рдФрд░ .d.ts ) рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ noEmitOnError рдЪрд╛рд▓реВ рди рд╣реЛред
рдПрдХ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реЛрдЧрд╛ - рдпрджрд┐ рдЖрдкрдХреА рдкреБрд░рд╛рдиреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдХреЛрдИ рдирдИ рддреНрд░реБрдЯрд┐ рдереА, рддреЛ рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рджреЗрдЦреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдж рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЕрдм рдЕрдк-рдЯреВ-рдбреЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЫреЛрдбрд╝ рджреЗрдЧрд╛ред
рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, tsc -b рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП noEmitOnError рд╕рдХреНрд╖рдо рд╣реИред

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдмрд┐рд▓реНрдб рдЖрдЙрдЯрдкреБрдЯ ( .js , .d.ts , .d.ts.map , рдЖрджрд┐) рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреБрдЫ рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдмрд╛рдж --force рдмрд┐рд▓реНрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рд╕рдВрдЪрд╛рд▓рди рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рдЙрдкрдХрд░рдг рд╕реНрдерд╛рдиреАрдп рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдФрд░ рджреВрд░рд╕реНрде рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рдмреАрдЪ рдЯрд╛рдЗрдорд╕реНрдЯрдореИрдк рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдПрдордПрд╕рдмрд┐рд▓реНрдб

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдПрдордПрд╕рдмрд┐рд▓реНрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, рддреЛ рдЖрдк рдЬреЛрдбрд╝рдХрд░ рд╕рдХреНрд╖рдо рдмрд┐рд▓реНрдб рдореЛрдб рдЪрд╛рд▓реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

    <TypeScriptBuildMode>true</TypeScriptBuildMode>

рдЖрдкрдХреА рдкреНрд░реЛрдЬ рдлрд╝рд╛рдЗрд▓ рдореЗрдВред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдлрд╛рдИ рдХреЛ рднреА рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ tsconfig.json / -p , рдореМрдЬреВрджрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЖрдкрдХреА tsconfig рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреБрдЫ рдЯреАрдореЛрдВ рдиреЗ рдПрдордПрд╕рдмрд┐рд▓реНрдб-рдЖрдзрд╛рд░рд┐рдд рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рд╕реЗрдЯ рдЕрдк рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ tsconfig рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЧреНрд░рд╛рдлрд╝ рдСрд░реНрдбрд░рд┐рдВрдЧ рд╣реИ рдЬреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдРрд╕рд╛ рд╣реИ, рддреЛ рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рд╛рде msbuild рд╕рд╛рде tsc -p рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ; рдпреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд▓ рд╣реИрдВред

рджрд┐рд╢рд╛ рдирд┐рд░реНрджреЗрд╢

рд╕рдордЧреНрд░ рд╕рдВрд░рдЪрдирд╛

рдЕрдзрд┐рдХ tsconfig.json рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде, рдЖрдк рдЖрдорддреМрд░ рдкрд░ рдЕрдкрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
рдЗрд╕ рддрд░рд╣ рдЖрдк рдПрдХрд╛рдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдФрд░ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдПрдХ "рд╕рдорд╛рдзрд╛рди" tsconfig.json рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреА рд╕рднреА рд▓реАрдл-рдиреЛрдб рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╕ references рд╣реИред
рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реЗрдкреЛ рдореЗрдВ рд╣рдо рд╕рднреА рдПрдВрдбрдкреЙрдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ tsc -b src рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕рднреА рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ src/tsconfig.json рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ 3.0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ tsconfig.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ reference рд╣реИ, рддреЛ рдЕрдм рдЦрд╛рд▓реА files рд╕рд░рдгреА рд╣реЛрдиреЗ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред

рдЖрдк рдЗрди рдкреИрдЯрд░реНрди рдХреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реЗрдкреЛ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - src/tsconfig_base.json , src/tsconfig.json , рдФрд░ src/tsc/tsconfig.json рдкреНрд░рдореБрдЦ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВред

рд╕рд╛рдкреЗрдХреНрд╖ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛

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

рдЖрдЙрдЯрдлрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛

outFile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рд▓реЗрдЖрдЙрдЯ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдЙрддрдирд╛ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред
рдзреНрдпрд╛рди рд░рдЦрдиреЗ рд╡рд╛рд▓реА рдПрдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЖрдо рддреМрд░ рдкрд░ "рдЕрдВрддрд┐рдо" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рддрдХ prepend рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ - рдЗрд╕рд╕реЗ рдмрд┐рд▓реНрдб рд╕рдордп рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ рдФрд░ рдХрд┐рд╕реА рднреА рдмрд┐рд▓реНрдб рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ I/O рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧреАред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░реЗрдкреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрджрд░реНрдн рд╣реИ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ "рд▓рд╛рдЗрдмреНрд░реЗрд░реА" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдХреБрдЫ "рдПрдВрдбрдкреЙрдЗрдВрдЯ" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИрдВ; "рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ" рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЫреЛрдЯрд╛ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЙрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

monorepos . рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛

TODO: рдЕрдзрд┐рдХ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рд╢ рдФрд░ рд▓рд░реНрди рдХреЗ рдкрд╛рд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбрд▓ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЕрдВрдд рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ

#25164 . рдкрд░ рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ

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

рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдиреЛрдЯ рд╣реИрдВ:

  1. рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдХреНрдпрд╛ рд╣реИ? рдЗрд╕ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХрд╛ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
  2. рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдЪ), рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпреЗ рд╕реАрдПрд╕рдПрд╕, рдПрдЪрдЯреАрдПрдордПрд▓, рдЗрдореЗрдЬ рдлрд╛рдЗрд▓ рдЖрджрд┐ рд╣реИрдВ, рдЧрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдЗрд╕ рдирдП рддрд░реАрдХреЗ рдХреЛ рдХреИрд╕реЗ рдЕрдкрдирд╛рдПрдЧрд╛ред рдХрд╣реЛ, рдореИрдВ рди рдХреЗрд╡рд▓ *.ts рдлрд╛рдЗрд▓реЛрдВ рдкрд░, рдмрд▓реНрдХрд┐ рд╣рдорд╛рд░реА рд╕рднреА рдЕрдиреНрдп рдлрд╛рдЗрд▓реЛрдВ (рд╢реИрд▓рд┐рдпреЛрдВ, рдорд╛рд░реНрдХрдЕрдк рдЖрджрд┐) рдкрд░ рдШрдбрд╝реА рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЙрд╕рдХреЛ рдХреИрд╕реЗ рдХрд░реЗ? рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ gulp watch рдФрд░ tsc -b -w рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

@vvs a monorepo рдЖрдорддреМрд░ рдкрд░ рд░рд╢ рдпрд╛ рд▓рд░реНрди рдЬреИрд╕реЗ рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд NPM рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ

рдпрджрд┐ рдЖрдк рдЧрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬреЛ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдордЭрддрд╛ рд╣реЛред @rbuckton рдиреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдЧрд▓реНрдкрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ; рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╡рдЬрди рдХрд░ рд╕рдХреЗ рдХрд┐ рд╡рд╣рд╛рдВ рдХреМрди рд╕реЗ рдЕрдЪреНрдЫреЗ рдкреИрдЯрд░реНрди рджрд┐рдЦрддреЗ рд╣реИрдВ

@RyanCavanaugh рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рд▓рд░реНрди рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ :)

@RyanCavanaugh рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓рд░реНрди рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

рдЖрдкрдХреЗ рд▓реЗрдЦрди рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рдЕрд╕реНрдкрд╖реНрдЯ рдмрд╛рдд prepend рд╡рд┐рдХрд▓реНрдк рдереАред рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЖрдк рдХрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рдХрдорд╛рд▓ рдХрд╛ рд╣реИ! рдореИрдВ ts-loader рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ LanguageServiceHost / WatchHost рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ?

(рдореЗрд░реЗ рдорддрд▓рдм рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/TypeStrong/ts-loader/blob/master/src/servicesHost.ts рджреЗрдЦреЗрдВред)

рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рд╕рднреА рдорд╛рд░реНрдЧрджрд░реНрд╢рди / рдЬрдирд╕рдВрдкрд░реНрдХ рдХреГрддрдЬреНрдЮрддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ! рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ ts-loader рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдмреЗрд╢рдХ рдЕрдЧрд░ рдпрд╣ "рдмрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ" рддреЛ рдпрд╣ рдФрд░ рднреА рдмреЗрд╣рддрд░ рд╣реИ: рдореБрд╕реНрдХрд╛рди:

рдорд╣рд╛рди рдХрд╛рдо!

@yortus @EisenbergEffect рдореИрдВрдиреЗ https://github.com/RyanCavanaugh/learn-a рдкрд░ рдПрдХ рдирдореВрдирд╛ рд▓рд░реНрди рд░реЗрдкреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ README рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдард╛рдП рдЧрдП рдХрджрдореЛрдВ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ tsc -b X рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рд╕рдм рдХреБрдЫ (рдПрдХреНрд╕ рдФрд░ рдЗрд╕рдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдФрд░ рдЯреНрд░рд╛рдВрдЬрд┐рдЯрд┐рд╡ рдирд┐рд░реНрднрд░рддрд╛) рдЕрджреНрдпрддрд┐рдд рд╣реИ? рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рд╣рдо рдмрд┐рдирд╛ рд╕рдВрджрд░реНрдн рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП -b рдзреНрд╡рдЬ рдХреЗ рдмрд┐рдирд╛ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? (рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЛрдг рдирд┐рд░реНрднрд░рддрд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ)

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдореИрдВ рдПрдХ Lerna рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдореЛрдиреЛ рд░реЗрдкреЛ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдУрд░ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

{
"рд▓рд░реНрди": "2.11.0",
"рдкреИрдХреЗрдЬ": [
"рдкреИрдХреЗрдЬ/рдШрдЯрдХ/ ","рдкреИрдХреЗрдЬ/рдкреБрд╕реНрддрдХрд╛рд▓рдп/ ",
"рдкреИрдХреЗрдЬ/рдврд╛рдВрдЪреЗ/ ","рдкреИрдХреЗрдЬ/рдЕрдиреБрдкреНрд░рдпреЛрдЧ/ ",
"рдкреИрдХреЗрдЬ/рдЙрдкрдХрд░рдг/*"
],
"рд╕рдВрд╕реНрдХрд░рдг": "0.0.0"
}

рддреЛ рдпрд╣ typescript@next ?

рдореИрдВ рдЕрдкрдиреЗ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рд░реЗрдкреЛ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ред рд╣рдореЗрдВ рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП nohoist рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЕрднреА рддрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред

@RyanCavanaugh рдореИрдВрдиреЗ рдЖрдЬ рд░рд╛рдд рдЯреЗрд╕реНрдЯ рд░рди рдХреЗ рд▓рд┐рдП рд░реЗрдкреЛ рд▓рд┐рдпрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдореБрджреНрджреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд░реЗрдкреЛ рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рд╛ред рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВред

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

рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рддрд░рд╣ рдЕрд▓рдЧ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ; ECMA рд▓рдХреНрд╖реНрдпреАрдХрд░рдг (es5, es6), рдкреНрд░рдХрд╛рд░ (рдиреЛрдб, рдЬреЗрд╕реНрдЯ, DOM рдЖрджрд┐), рдПрдорд┐рдЯ (рдХреБрдЫ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╕реНрд╡рдпрдВ рдХреЛ js рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ)ред рд╡реЗ рд╕рднреА рдПрдХ рдЪреАрдЬ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣ рд╣реИ tslint рдкреНрд▓рдЧрдЗрди , рдмрд╛рдХреА рд╕рднреА рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдЯреВрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж tslint рднреА рдЪрд▓рд╛рддрд╛ рд╣реИ (рдкреНрд░рддрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдЕрдЧрд░ рдХреЛрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ tslint рд╕реЗ рдкрд╣рд▓реЗ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ)ред

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

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

рдореБрдЭреЗ рдХреБрдЫ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬрд┐рдирдХрд╛ рдореИрдВ рдиреАрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ TS рдЯреАрдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рдЙрдирдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ --build рдореЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

tsc --build рдореЛрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

1. рдирдХрд▓реА "\рдкреБрд░рд╛рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ '2.map' рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ"

рдореБрдЭреЗ рдпрд╣ рд╕рдВрджреЗрд╢ рд╣рд░ рдмрд┐рд▓реНрдб рдкрд░ рд╣рд░ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓реЗ рдЬрд╛рдиреЗ рдкрд░ рднреА рд╣рд░ рдмрд┐рд▓реНрдб рдПрдХ рдкреВрд░реНрдг рд░реА-рдмрд┐рд▓реНрдб рдмрди рдЧрдпрд╛ред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ @RyanCavanaugh рдиреЗ рдЗрд╕реЗ #25281 рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдареАрдХ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк 20180628 рдпрд╛ рдмрд╛рдж рдореЗрдВ рд░рд╛рдд рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЕрдм рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрджреНрджреЗ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдХрдо рд╕реЗ рдХрдо 20180628 рд░рд╛рдд рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред

2. "\рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрд┐рдд рд╣реИ" рдЬрдм рдпрд╣ рдирд╣реАрдВ рд╣реИ

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: #25337 рдкрд░ рд╕реВрдЪрдирд╛ рджреАред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, @RyanCavanaugh рдХреЗ learn-a рдирдореВрдирд╛ рд░реЗрдкреЛ рдХреЛ рдЙрдирдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯ tsc -b packages --verbose рдЪрд▓рд╛рдПрдВред рдЕрдм рд▓рд╛рдЗрди 1 рдХреЛ pkg1/src/index.ts рд╕реЗ import {} from "./foo"; рдореЗрдВ рдмрджрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕реЗрд╡ рдХрд░реЗрдВред tsc -b packages --verbose рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБред pkg2 рд▓рд┐рдП рдмрд┐рд▓реНрдб рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рднрд▓реЗ рд╣реА pkg1 рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рдЬреЛ pkg2 рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЕрдм рдЖрдк pkg2/src/index.ts рдореЗрдВ рдПрдХ рд▓рд╛рд▓ рд░рдВрдЧ рдХреА рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред tsc -b packages --force рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ рдФрд░ рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрджреНрджреЗ рдЗрд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП --force рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВред

3. рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ .d.ts рдлрд╛рдЗрд▓реЗрдВ 'рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░' рдХреЗ рдХрд╛рд░рдг рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдкреИрдХреЗрдЬ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкреИрджрд╛ рдХрд░рддреА рд╣реИрдВ

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: #25338 рдкрд░ рд╕реВрдЪрдирд╛ рджреАред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, @RyanCavanaugh рдХреЗ learn-a рдирдореВрдирд╛ рд░реЗрдкреЛ рдХреЛ рдЙрдирдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯ lerna add @types/node рдЪрд▓рд╛рдПрдБред рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tsc -b packages --force рдЪрд▓рд╛рдПрдБ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдареАрдХ рд╣реИред рдЕрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ pkg1/src/index.ts :

// CASE1 - no build errors in pkg1, but 'duplicate identifier' build errors in pkg2
// import {parse} from 'url';
// export const bar = () => parse('bar');

// CASE2 - no build errors in pkg1 or in downstream packages
// import {parse, UrlWithStringQuery} from 'url';
// export const bar = (): UrlWithStringQuery => parse('bar');

// CASE3 - no build errors in pkg1 or in downstream packages
// export declare const bar: () => import("url").UrlWithStringQuery;

// CASE4 - no build errors in pkg1, but 'duplicate identifier' build errors in pkg2
// import {parse} from 'url';
// type UrlWithStringQuery = import("url").UrlWithStringQuery;
// export const bar = (): UrlWithStringQuery => parse('bar');

рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рдХреЗрд╕ рдХреЛ рдЕрдирдХрдореНрдореЗрдВрдЯ рдХрд░реЗрдВ рдФрд░ tsc -b packages --force рдЪрд▓рд╛рдПрдВред рдХреЗрд╕ 1 рдФрд░ 4 рдХреЗ рдХрд╛рд░рдг pkg2 рдореЗрдВ рдмрд┐рд▓реНрдб рдПрд░рд░ рдХреА рдмрд╛рдврд╝ рдЖ рдЬрд╛рддреА рд╣реИред рдорд╛рдорд▓реЛрдВ 2 рдФрд░ 3 рдХреЗ рд╕рд╛рде, рдХреЛрдИ рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВред рдорд╛рдорд▓реЛрдВ 1 рдФрд░ 4 рдХреЗ рд╕рд╛рде рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдЙрддреНрдкрдиреНрди pkg1/lib/index.d.ts рдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ:

/// <reference path="../node_modules/@types/node/index.d.ts" />

рдХреЗрд╕ 2 рдФрд░ 3 рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЬрдм pkg2 1 рдФрд░ 4 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рд╕реНрддреЛрдВ рдкрд░ @types/node рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рджреЛ рд╕рдорд╛рди рдкреНрд░рддрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдЗрд╕рд╕реЗ 'рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛' рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВред

рд╢рд╛рдпрдж рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╕ 2 рдФрд░ 3 рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╛рдлреА рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред рдЗрди 4 рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП pkg1 рдореЗрдВ рдХреЛрдИ рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐ рдпрд╛ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдмрд┐рд▓реНрдб рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рд╕рдЯреАрдХ рд╢реИрд▓реА рдХреЗ рдкреНрд░рддрд┐ рдмрд╣реБрдд рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╛ рддреЛ (рдП) pkg1 рдорд╛рдорд▓реЛрдВ 1 рдФрд░ 4 рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдпрд╛ (рдмреА) рд╕рднреА рдЪрд╛рд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдорд╛рди рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдмрд┐рд▓реНрдб рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ (рд╕реА) рдЯреАрдПрд╕ рдЯреАрдо рд╕реЗ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред

4. рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЙрддреНрдкрдиреНрди .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ import рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ

рд╣рдорд╛рд░реЗ 17 рдкреИрдХреЗрдЬ рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рд▓реНрдб рдореЛрдб рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рдЙрддреНрдкрдиреНрди .d.ts рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ import рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЗ рдХрд╛рд░рдг рдХрдИ рдмрд┐рд▓реНрдб рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЕрдВрдд рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдЙрддреНрдерд╛рдкрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛ред рдпрд╣реА рд╣реИ, рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕рднреА рд╕реНрдерд╛рдкрд┐рдд рдореЙрдбреНрдпреВрд▓ рдореЛрдиреЛрд░реЗрдкреЛ-рд░реВрдЯ node_modules рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╣рд░рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рдореНрд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдореИрдВрдиреЗ packages рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрдиреЛрд░реЗрдкреЛ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ lerna.json , рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг lerna рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЧреИрд░-рдЙрддреНрдерд╛рдкрди рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╡реИрд╕реЗ рднреА рдпрд╣ рдПрдХ рдмреЗрд╣рддрд░/рд╕реБрд░рдХреНрд╖рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдзреАрдорд╛ рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЯреАрдПрд╕ рдореЙрдбреНрдпреВрд▓-рд╣реЛрд╕реНрдЯреЗрдб рд╕реЗрдЯрдЕрдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЬрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ, рдЙрдирдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рд░реЗрдкреНрд░реЛ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рддреЛ рдореИрдВ рдПрдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдХреБрдЫ рдмрд┐рд▓реНрдб рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп packages рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (tsconfig рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдФрд░ рд╢реАрд░реНрд╖-рд╕реНрддрд░ node_modules рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ ( import рдЕрдиреБрд╕рд╛рд░) рджреЛрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред .d.ts рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ)ред рдпрд╣ рдХрднреА-рдХрднреА рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░рддреАрдХреЛрдВ рдЬреИрд╕реА рдЪреАрдЬрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

5. рджреЛрд╣рд░рд╛рд╡ рд╡рд┐рдиреНрдпрд╛рд╕

рд▓рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ "packages": ["packages/*"] рдЬреИрд╕реЗ рдХреБрдЫ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ lerna.json ред Lerna рдЧреНрд▓реЛрдмрд╕реНрдЯрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗ рд╕рдЯреАрдХ рдкреИрдХреЗрдЬ рд╕реВрдЪреА рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЗ package.json рдореЗрдВ рдШреЛрд╖рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рджреЗрдЦрдХрд░ рд╕рдЯреАрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЕрдкрдиреА рдорд░реНрдЬреА рд╕реЗ рдкреИрдХреЗрдЬ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬреЛрдбрд╝ рдФрд░ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ lerna рдЗрд╕рдХреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЛ рдЫреВрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ --build рдореЛрдб рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдорд╛рд░реЛрд╣ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЧреНрд▓реЛрдм рдкреИрдЯрд░реНрди рдХреЛ рдкрд╣рдЪрд╛рдирд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдФрд░ рдмрдирд╛рдП рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП packages/tsconfig.json ) @RyanCavanaugh рдХреЗ learn-a рдирдореВрдирд╛ рд░реЗрдкреЛ рдореЗрдВред рдмрд┐рд▓реНрдб рдореЛрдб package.json рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЛ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕рдХреА package.json рдлрд╝рд╛рдЗрд▓ ( "dependencies" рддрд╣рдд) рдФрд░ рд╕рд╛рде рд╣реА рджреЛрдиреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ tsconfig.json рдлрд╝рд╛рдЗрд▓ рд╣реИ ( "references" рддрд╣рдд)ред

рдпрд╣ рдПрдХ рдЫреЛрдЯреА рд╕реА рдЕрд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ lerna's рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд░рд┐рдЧрдорд╛рд░реЛрд▓ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд▓рдЧрд╛ред

6. tsc рд╡реИрд╢реНрд╡рд┐рдХ рдореЙрдбреНрдпреВрд▓ рд╕рдВрд╡рд░реНрджреНрдзрди рдХреЗ рд╕рд╛рде рдХреНрд░реИрд╢

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: #25339 рдкрд░ рд╕реВрдЪрдирд╛ рджреАред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, @RyanCavanaugh рдХреЗ learn-a рдирдореВрдирд╛ рд░реЗрдкреЛ рдХреЛ рдЙрдирдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯ lerna add @types/multer рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП multer рддреАрдиреЛрдВ рд╕рдВрдХреБрд▓ рдХреЛ typingsред рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tsc -b packages --force рдЪрд▓рд╛рдПрдБ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдареАрдХ рд╣реИред рдЕрдм рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдХреЛ pkg1/src/index.ts :

export {Options} from 'multer';

tsc -b packages --force рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБред рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдП рдЧрдП рджрд╛рд╡реЗ рдХреЗ рдХрд╛рд░рдг рд╕рдВрдХрд▓рдХ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдФрд░ рдЕрднрд┐рдХрдерди рдХреЛ рджреЗрдЦрд╛, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ Express рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд╡рд░реНрджреНрдзрди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╣реИред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @yortus ред рднрд░реЛрд╕рд╛ рдХрд░реЗрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВред 3 рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ https://github.com/Microsoft/TypeScript/issues/25278 рд╣реИред

4 рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЙрддреНрдерд╛рдкрди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБред рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░/рдпрд╛ рдПрдХ рд░реЗрдкреНрд░реЛ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@mhegazy рдХрдИ рдЬреЛ рд▓рд░реНрди рдФрд░ рдпрд╛рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд╡реЗ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ (рд╕реНрд╡рдпрдВ рд╕рд╣рд┐рдд) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ: https://yarnpkg.com/lang/en/docs/workspaces/

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕, рд▓рд░реНрди, рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд tsconfigs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдЖрдзрд╛рд░ tsconfig paths рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЛрд╕реНрдЯреЗрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ root/node_modules ред рдЬрдм рдореИрдВ yarn рдФрд░ monorepo рд╕реБрдирддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ workspaces рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдмрд╣реБрдд рд╣реА рдЙрджреНрджреЗрд╢реНрдп рд╣реИ - рдЙрдкрдпреЛрдЧ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдФрд░ рджреЛрд╣рд░рд╛рд╡ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдореЗрд░реЗ рдЖрдзрд╛рд░ tsconfig рдореЗрдВ рдШреЛрд╖рд┐рдд рдореЗрд░реЗ рд▓рдВрдмреЗ/рджрд░реНрджрдирд╛рдХ paths рдХреЛ рд╕рд░рд▓ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджреЗрдЧрд╛ред

рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдореВрд▓ monorepo tsconfig рдХрд╛ рдПрдХ рдирдореВрдирд╛ рд╣реИ (рдпрджрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рдорджрдж рдХрд╛ рд╣реИ):

{
  "extends": "./packages/build/tsconfig.base.json",
  "compilerOptions": {
    "baseUrl": "./packages",
    "paths": {
      "@alienfast/build/*": ["./build/src/*"],
      "@alienfast/common-node/*": ["./common-node/src/*"],
      "@alienfast/common/*": ["./common/src/*"],
      "@alienfast/concepts/*": ["./concepts/src/*"],
      "@alienfast/faas/*": ["./faas/src/*"],
      "@alienfast/math/*": ["./math/src/*"],
      "@alienfast/notifications/*": ["./notifications/src/*"],
      "@alienfast/ui/*": ["./ui/src/*"],
      "@alienfast/build": ["./build/src"],
      "@alienfast/common-node": ["./common-node/src"],
      "@alienfast/common": ["./common/src"],
      "@alienfast/concepts": ["./concepts/src"],
      "@alienfast/faas": ["./faas/src"],
      "@alienfast/math": ["./math/src"],
      "@alienfast/notifications": ["./notifications/src"],
      "@alienfast/ui": ["./ui/src"],
    }
  },
  "include": ["./typings/**/*", "./packages/*/src/**/*"],
  "exclude": ["node_modules", "./packages/*/node_modules"]
}

рдореИрдВ рдПрдХ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдлреЛрд░реНрдХрд┐рдВрдЧ рдкрд░ рдПрдХ рд╢реЙрдЯ рд▓реВрдВрдЧрд╛:
https://github.com/RyanCavanaugh/learn-a

рдпрд╛рд░реНрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде @RyanCavanaugh рдХреЗ рд░реЗрдкреЛ рдореЗрдВ рд╡рд┐рд▓рдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреИрд░-рд╡рд┐рд▓рдп рдкреАрдЖрд░ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
https://github.com/RyanCavanaugh/learn-a/pull/3/files

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

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

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

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

рдореИрдВрдиреЗ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЫрдард╛ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рд╛ рд╣реИред tsc рд╡рд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

@mhegazy рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдЗрдЯрдо 3 # 25278 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред #25278 рдЕрдорд╛рдиреНрдп рдШреЛрд╖рдгрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдореЗрд░реА рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдШреЛрд╖рдгрд╛ рдлрд╛рдЗрд▓реЗрдВ рд╡рд╛рдХреНрдп-рд░рдЪрдирд╛ рдФрд░ рд╢рдмреНрджрд╛рд░реНрде рд░реВрдк рд╕реЗ рдорд╛рдиреНрдп рдереАрдВ, рд▓реЗрдХрд┐рди рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдиреЛрдб рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рджреЛ рдкреНрд░рддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк 'рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░' рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реБрдИрдВред

рдКрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдЙрддреНрдерд╛рдкрди рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд░реВрдЯ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИ рдХрд┐ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╣рдореЗрд╢рд╛ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдЯреНрд░реА рдХреЛ рдкрд╛рд░ рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рднреА рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдкрд╛рддрд╛ред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реИ, рдХрд┐ рдпрд╣ "рдкреНрд░реЗрдд рдирд┐рд░реНрднрд░рддрд╛" рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХреА package.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрдм рдЖрдк рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрд░реЗрд╢рд╛рдиреА рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ (1) рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛ рдкрд░реАрдХреНрд╖рдг/рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдпрд╛ (2) рдирд┐рд░реНрднрд░рддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд╛рдпрдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдПрдХ рдЕрд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдлрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВред рдкреАрдПрдирдкреАрдПрдо рдФрд░ рд░рд╢ рджреЛрдиреЛрдВ рдХреЗ рдкрд╛рд╕ рдкреНрд░реЗрдд рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

рдореЗрд░реЗ рдкрд╛рд╕ tsc --build рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди рд╣реИ: рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдХреА рдорд╛рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдЖрдо рддреМрд░ рдкрд░ рдЯреВрд▓рдЪреЗрди рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдкреВрд░реА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рд╕рд╛рдорд╛рди:

  • рдкреВрд░реНрд╡ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг
  • рд╕реНрдерд╛рдиреАрдпрдХреГрдд рддрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛
  • рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ (рд╕реАрдПрд╕рдПрд╕, рдЪрд┐рддреНрд░, рдЖрджрд┐)
  • рд╕рдВрдХрд▓рди (рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ / рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ)
  • .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд░реЛрд▓ рдЕрдк рдХрд░рдирд╛ (рдЙрджрд╛. рд╡реЗрдмрдкреИрдХ)
  • .d.ts рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд░реЛрд▓ рдЕрдк рдХрд░рдирд╛ (рдЬреИрд╕реЗ рдПрдкреАрдЖрдИ рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯрд░)
  • рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдкреАрдврд╝реА рд╕рд╣рд┐рдд рдкреЛрд╕реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ

рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдЬреИрд╕реЗ рдХрд┐ рдЧрд▓реНрдк рдпрд╛ рд╡реЗрдмрдкреИрдХ рдЗрд╕ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдмреАрдЪ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдХрджрдо рд╣реИред рдХрднреА-рдХрднреА рдПрдХ рджреНрд╡рд┐рддреАрдпрдХ рдЯреВрд▓ рдмрд┐рд▓реНрдб рдХреЛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рднреА рдЪрд▓рд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ Jest+ts-jest jest --watch ред

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

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

рдпреЗ рдЖрд▓реЛрдЪрдирд╛рдПрдБ BTW рдирд╣реАрдВ рд╣реИрдВред рдореИрдВ рд╕рд┐рд░реНрдл рдмрдбрд╝реА рддрд╕реНрд╡реАрд░ рдФрд░ рдЗрдЪреНрдЫрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@pgonzal рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЛрдиреЛрд░реЗрдкреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЧреИрд░-tsc рднрд╛рдЧ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд░реНрди рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛рдпрд╛:

  • рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ prebuild рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░/рдпрд╛ рдПрдХ postbuild рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдкрдиреЗ package.json рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрдирдореЗрдВ рдмрд┐рд▓реНрдб рдХреЗ рдЧреИрд░-tsc рдкрд╣рд▓реВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
  • рдореЛрдиреЛрд░реЗрдкреЛ рдХреЗ package.json , рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВ:
    "prebuild": "lerna run prebuild", "build": "tsc --build monorepo.tsconfig.json --verbose", "postbuild": "lerna run postbuild",
  • рдмрд╕, рдЗрддрдирд╛ рд╣реАред рдореЛрдиреЛрд░реЗрдкреЛ рд╕реНрддрд░ рдкрд░ yarn build рдЪрд▓рд╛рдирд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП prebuild рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдпрд╣ tsc --build рдЪрд░рдг рдЪрд▓рд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдпрд╣ рд╕рднреА postbuild рдЪрд▓рд╛рддрд╛ рд╣реИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдПрдирдкреАрдПрдо рдФрд░ рдпрд╛рд░реНрди рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдореНрдореЗрд▓рди рджреНрд╡рд╛рд░рд╛, npm run foo рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд▓рдЧрднрдЧ npm run prefoo && npm run foo && npm run postfoo рдЬреИрд╕рд╛ рд╣реА рд╣реИред)

рдЖрдк jest --watch рдпрд╛ webpack-dev-server рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрдм рдХреЛрдИ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╢реЛрдзрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреНрдпрд╛ рдкреНрд░реАрдмрд┐рд▓реНрдб/рдкреЛрд╕реНрдЯрдмрд┐рд▓реНрдб рдЪрд░рдг рдлрд┐рд░ рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдЗрд╕рдХрд╛ ts-node рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣реЛрдВ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ? рд╣рдорд╛рд░реЗ рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рдРрдкреНрд╕ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ "рд╕реАрдзреЗ" рдЪрд▓рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ "start": "ts-node ./src/app.ts" рдпрд╛ "start:debug": "node -r ts-node/register --inspect-brk ./src/app.ts" ред

#25355 рдкрд░ рдмрд┐рд▓реНрдб рдореЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реВрдЪрдирд╛ рджреАред

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

@yortus рдкреБрдирдГ https://github.com/Microsoft/TypeScript/issues/3469#issuecomment -400439520

рдмрдврд╝рд┐рдпрд╛ рд▓реЗрдЦрди, рдЗрд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж. рдЖрдкрдХреЗ рдореБрджреНрджреЗ рдХреНрд░рдо рдореЗрдВ -

  1. рдлрд┐рдХреНрд╕реНрдб
  2. #25370 . рдкрд░ рдкреАрдЖрд░ рдЕрдк
  3. рд▓реЙрдЧ рдХрд┐рдП рдЧрдП рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ - рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдХреБрдЫ рдХрд░реЗрдВрдЧреЗ
  4. рдЬрд╛рдВрдЪ (рдиреАрдЪреЗ)
  5. рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ #25376
  6. рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ --build AFAICT рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рддред рдпрд╣ рдПрдХ рдирдпрд╛ рдЕрднрд┐рдХрдерди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ; рдирд╛рдерди рдХреА рдЬрд╛рдВрдЪ

learn-a рд░реЗрдкреЛ рдкрд░ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП @rosskevin ! рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рд╣рдо рддреБрд▓рдирд╛ рдФрд░ рддреБрд▓рдирд╛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдХрд░ рд╕рдХреЗрдВред

@pgonzal рдкреБрдирдГ https://github.com/Microsoft/TypeScript/issues/3469#issuecomment -401577442

рдореЗрд░реЗ рдкрд╛рд╕ tsc --build рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди рд╣реИ: рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХ рдореЛрдиреЛрд░реЗрдкреЛ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд┐рдВрдЧ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдХреА рдорд╛рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рдорд╣рд╛рди рдкреНрд░рд╢реНрди; рдореИрдВ рдЗрд╕рдХрд╛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдЙрддреНрддрд░ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ ред

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

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

@borekb рдкреБрдирдГ https://github.com/Microsoft/TypeScript/issues/3469#issuecomment -401593804

рдХреНрдпрд╛ рдЗрд╕рдХрд╛ ts-рдиреЛрдб рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣реЛрдВ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ? рд╣рдорд╛рд░реЗ рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рдРрдкреНрд╕ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ "рд╕реАрдзреЗ" рдЪрд▓рддреЗ рд╣реИрдВ

рдПрдХрд▓-рдлрд╝рд╛рдЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд╢реВрдиреНрдп рдкреНрд░рднрд╛рд╡ рд╣реЛрддрд╛ рд╣реИред

@EisenbergEffect рдХреЗ рдкрд╛рд╕ рдХреНрд░реЙрд╕-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╛рдо рдмрджрд▓рдиреЗ рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ learn-a рд░реЗрдкреЛ рдореЗрдВ рдХреБрдЫ рдкреНрд░рд╢реНрди рдереЗред рдпрд╣рд╛рдВ рдмрдбрд╝рд╛ рдЦреБрд▓рд╛ рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ 3.0 рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рдкрд╛рдПрдВрдЧреЗ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдХреНрд░реЙрд╕-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ "рдмрд╕ рдХрд╛рдо рдХрд░реЗрдЧрд╛", рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдЕрдзреАрди рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рднреА рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдгрд╛рдпрдХ рд░реВрдк рд╕реЗ рдвреВрдВрдврдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рд╣реИ - рдпрд╣ рдЕрдиреНрдп рдХреА рддрд▓рд╛рд╢ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ "рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рдпрд╛рд╕" рд╣реЛрдЧрд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ.

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

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

рдЦреБрд▓реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЗрд╕ рд╕рдордп рдЯреНрд░реИрдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

  • рдХреНрд░реЙрд╕-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ - @ рдПрдВрдбреА-рдПрдордПрд╕ рд▓рд╛рдЧреВ рд╣реЛ рд░рд╣рд╛ рд╣реИ
  • рдлрд╣рд░рд╛рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рд╕реЗрдЯрдЕрдк рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдирд┐рд╣рд┐рддрд╛рд░реНрдереЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдореБрдЭ рдкрд░
  • рдирдореВрдирд╛ learn-a рд░реЗрдкреЛ рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ yarn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЬреЛ pnpm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЬреЛ рдлрд╣рд░рд╛рдП рдЧрдП рдореЛрдб рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

рдкреНрд░рд╢реНрди рдЦреЛрд▓реЗрдВ

  • рдХреНрдпрд╛ рд╣рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрднреЛрдВ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП package.json s рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ #25376
  • рдХреНрдпрд╛ .d.ts.map рдЙрддреНрд╕рд░реНрдЬрди composite рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

@RyanCavanaugh рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП

рдЦреБрд▓реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЗрд╕ рд╕рдордп рдЯреНрд░реИрдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

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

рдЧреВрдВрдЧрд╛ рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рдЪреВрдВрдХрд┐ рдпрд╣ рд░реЛрдбрдореИрдк рдореЗрдВ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░реВрдВ?

@ рдПрд▓реЗрдХреНрд╕реА-рдмрд╛рдпрдХреЛрд╡ рдЖрдк рдЗрд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ @ рдЕрдЧрд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдпрд╛рд░реНрди рд╡рд░реНрдХрд╕реНрдкреЗрд╕ рд╕рдВрдЪрд╛рд▓рд┐рдд рдореЛрдиреЛрд░реЗрдкреЛ рдкрд░ рдЖрдЬрдорд╛рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

рдореЗрд░реЗ рдкрд╛рд╕ *.d.ts рд╕реЗ рднрд░рд╛ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

  • рдЗрд╕реЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВ (рдХреЛрд╢рд┐рд╢ рдХреА, рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛)
  • рдЗрд╕рдХреЗ рд▓рд┐рдП "рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ" рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ

@timfish рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕реБрдиреА рдЧрдИ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ; рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ #25562

@aleksey-bykov https://github.com/Microsoft/TypeScript/issues/3469#issuecomment -400439520 рдХреБрдЫ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП

@RyanCavanaugh рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реЗрдлрд░рд┐рдВрдЧ рдХреЗрд╡рд▓ рдХреЙрдордирдЬ рдФрд░ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣реИ рдирд╛?

рдЖрдк рдореЗрдВ рдЙрджрд╛рд╣рд░рдг:

import * as p1 from "@ryancavanaugh/pkg1";
import * as p2 from "@ryancavanaugh/pkg2";

p1.fn();
p2.fn4();
  1. @ryancavanaugh рдореЙрдбреНрдпреВрд▓ рдХреНрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдЗрд╕рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реИ рдХрд┐ TS рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ?
  2. рдХреНрдпрд╛ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдПрдПрдордбреА (рдХреНрд▓рд╛рд╕рд┐рдХ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ?
  3. рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП outFile рдЖрд╡рд╢реНрдпрдХ рд╣реИ?
  4. рдЬрд╣рд╛рдВ d.ts рдлрд╛рдЗрд▓реЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреНрдпрд╛ рдореИрдВ рдЕрднреА рднреА рдЖрдЙрдЯрдбрд┐рдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдХреНрдпрд╛ рдЯреАрдПрд╕ рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рдвреВрдВрдвреЗрдЧрд╛?)

рдореЗрд░реЗ рдкрд╛рд╕ 2 рд╕рд░рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ essentials рдФрд░ common рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдЪреАрдЬреЗрдВ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИрдВ:

image

@ рдЕрд▓реЗрдХреНрд╕реА-рдмрд╛рдпрдХреЛрд╡

  1. рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдХреЛрдкреНрдб рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рд╣реИ, рдЬрд┐рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рддрд╣рдд рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  2. рдЖрдк рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рд╣рд┐рдд рдХрд┐рд╕реА рднреА рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрднреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рдирд╛рдо (рд╕реНрдХреЛрдкреНрдб рдореЙрдбреНрдпреВрд▓) рдиреЛрдб рдХреЗ рдмрд╛рд╣рд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИрдВ
  3. рдирд╣реАрдВ
  4. рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдвреВрдВрдврддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рдВрджрд░реНрднрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рддрд╛ рд╣реИ

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирдореВрдирд╛ рд░реЗрдкреЛ рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ рддреЛ рдореИрдВ рдирд┐рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рд╡рд╣ рддреНрд░реБрдЯрд┐ рдХреНрдпреЛрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИ

@RyanCavanaugh рдХреГрдкрдпрд╛ рдХрд░реЗрдВ
рдЙрджрд╛рд╣рд░рдг.рдЬрд╝рд┐рдк

@RyanCavanaugh , рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ tsc --build --watch рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рдХреЛ рддрдм рддрдХ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрд╢реЛрдзрди рди рджреЗрдЦреЗред

рдзрд╛рдЧрд╛ рдмрд╣реБрдд рд▓рдВрдмрд╛ (рд╕рдордп рдФрд░ рд╕реНрдерд╛рди рджреЛрдиреЛрдВ рдореЗрдВ); рдЖрдЗрдП рд▓рдХреА рдЗрд╢реНрдпреВ рдирдВрдмрд░ 100 * 2^8 : #25600 . рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

manekinekko picture manekinekko  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

CyrusNajmabadi picture CyrusNajmabadi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Roam-Cooper picture Roam-Cooper  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

blendsdk picture blendsdk  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

uber5001 picture uber5001  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ