Typescript: рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдВрдд рдореЗрдВ '.js' рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ

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

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ es6 рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ .js рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдЯреАрдПрд╕ рдореЗрдВ:
import { ModalBackground } from './ModalBackground';
ES2015 рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ:
import { ModalBackground } from './ModalBackground';

рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛ
import { ModalBackground } from './ModalBackground.js';

рдЗрд╕ рддрд░рд╣ рдореИрдВ рдХреНрд░реЛрдо 51 . рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Webpack boilerplate</title>
  <script type="module" src="index.js"></script>
</head>
<body></body>
</html>

image

https://github.com/Microsoft/TypeScript/issues/13422 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд

ES Modules Needs Proposal Suggestion

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

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

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

рдпрд╣ рд╕рд┐рд░реНрдл #13422 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд╛рдлреА рдирдХрд╛рд░рд╛рддреНрдордХ рд░рд╣реА рд╣реИрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдореБрджреНрджреЗ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдлрд┐рд▓рд╣рд╛рд▓ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрдереЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрд╡рдпрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

@justinfagnani @rictic

рдЯрд┐рдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЗрд▓/рдиреЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреВрдВрдЧрд╛ред

@DanielRosenwasser рдПрдХ рд▓реЗрдмрд▓ рдХреЗ рддрд╣рдд рджреЗрд╢реА ES6 рдореЙрдбреНрдпреВрд▓ рдореБрджреНрджреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ?

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

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

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ node_modules рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░ рд╡реЗрдмрдкреИрдХ рдЙрдиреНрд╣реЗрдВ ts-loader рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рдореЗрдВ рдмрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ:

import { KeyCodes } from 'vanilla-typescript;
https://github.com/quantumjs/vanilla-typescript/blob/master/events/KeyCodes.ts#L3

рдпрд╣рд╛рдВ рдЬреЗрдПрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдирд╛ рд╡реНрдпрд░реНрде рд╣реИред

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

рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдРрд╕рд╛ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рд╕реЗ рдЯреАрдПрд╕ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЬрд▓реНрджреА рдЪрдордХ рд╕рдХреЗред рд╢рд╛рдпрдж рдпрд╣ tsc рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

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

"use strict";

const FileHound = require('filehound');
const fs = require('fs');
const path = require('path');

const files = FileHound.create()
  .paths(__dirname + '/browserLoading')
  .discard('node_modules')
  .ext('js')
  .find();


files.then((filePaths) => {

  filePaths.forEach((filepath) => {
    fs.readFile(filepath, 'utf8', (err, data) => {


      if (!data.match(/import .* from/g)) {
        return
      }
      let newData = data.replace(/(import .* from\s+['"])(.*)(?=['"])/g, '$1$2.js')
      if (err) throw err;

      console.log(`writing to ${filepath}`)
      fs.writeFile(filepath, newData, function (err) {
        if (err) {
          throw err;
        }
        console.log('complete');
      });
    })

  })
});

рдореИрдВ рдЗрд╕реЗ рдПрдХ рдХреНрд▓реА рдЯреВрд▓ рдореЗрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ ..

@justinfagnani рдХреА рдЯрд┐рдкреНрдкрдгреА рд╕рд┐рд░ рдкрд░ рдХреАрд▓ рдареЛрдХрддреА рд╣реИред

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

рдЬрдм рддреБрдо рд▓рд┐рдЦрддреЗ рд╣реЛ

import { KeyCodes } from 'vanilla-typescript';

рдпрд╛ рдЙрд╕ рдмрд╛рдд рдХреЗ рд▓рд┐рдП

import { KeyCodes } from 'vanilla-javascript';

рдЖрдк рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рд╕реЗ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реЛ рднреА рд╕рдХрддреА рд╣реИ рдФрд░ рдирд╣реАрдВ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдВрдд рдореЗрдВ .js рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдПрдХ рд╡реИрдз рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдЖрдк рдПрдХ NodeJS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рддреЛ NodeJS рдЖрд╡рд╢реНрдпрдХрддрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡рддрдГ _not_ рдЗрд╕реЗ 'vanilla-typescript.js' рддрдХ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рд░ рдирд╛рдо рдФрд░ рд╡рд╕реАрдпрдд рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ, рд╕рдореНрдореЗрд▓рди рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛, рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ( рд╢рд╛рдпрдж рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдпрд╛рд╕реЛрдВ рдкрд░) '../../../node_modules/vanilla_typescript/index.js' рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдПред

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

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

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрднрд╡рддрдГ рдпрд╣рд╛рдВ рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред

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

рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢реЗрдЦреА рдмрдШрд╛рд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП ES рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдХрд╛рдлреА рджреВрд░ рд╣реИред

рдлрд┐рд░ рд╕реЗ NodeJS, RequJS AMD, Dojo AMD, Sea Package Manager, CommonJS, Browserify, Webpack, SystemJS, рд╕рднреА рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рдЕрдореВрд░реНрдд рдирд╛рдо рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ _рдореМрд▓рд┐рдХ_ рд╣реИред

рдореЗрд░рд╛ рд╡реНрдпрдВрдЧреНрдп рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ TS рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдиреЗ рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди ' ./file.js' рдЬреИрд╕реЗ рдЖрдпрд╛рдд рдЕрдм рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рднрд▓реЗ рд╣реА рдлрд╝рд╛рдЗрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ file.ts рд╣реЛ)ред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдареАрдХ рд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг .js рдЖрдпрд╛рдд рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред
lit-html рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: https://github.com/PolymerLabs/lit-html/blob/master/src/lib/repeat.ts#L15

рдЯреАрдПрд╕ 2.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдпрд╣ рд╕рдВрднрд╡ рд╣реИред рд▓реЗрдХрд┐рди рд╡реЗрдмрдкреИрдХ рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдЕрдВрдд рдореЗрдВ рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реИред

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

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ ts-loader рдореЗрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рд▓рдХреНрд╖реНрдп рдХреЛрдб рд╕реЗ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕реНрдЯреНрд░рд┐рдк рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреЛрдИ рд╕реАрдзреЗ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдмрдВрдбрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

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

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

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

рддрдм рддрдХ рд╣рдо SystemJS рдФрд░ Webpack рдЬреИрд╕реЗ рдЯреВрд▓реНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣реЗрдВрдЧреЗред

рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдмрдирд╛рдпрд╛ рдЬреЛ рдЖрдпрд╛рдд/рдирд┐рд░реНрдпрд╛рдд рд╡рд┐рд╡рд░рдгреЛрдВ рд╕реЗ '.js' рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ tsutils рдЯрд╛рдЗрдк рдЧрд╛рд░реНрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП yarn add tsutils --dev ред (рдкреИрдХреЗрдЬ рдЖрдорддреМрд░ рдкрд░ рд╡реИрд╕реЗ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ tslint рд╣реИ, рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛)

https://gist.github.com/AviVahl/40e031bd72c7264890f349020d04130a

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдХреЛрдИ рдЙрди ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдВрдбрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ .js ( webpack рдФрд░ ts-loader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЖрдпрд╛рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЕрднреА рднреА esm рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдореЗрдВ рд▓реЛрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ ( tsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред

рд╕рдВрднрд╡рдд: рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИред

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

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЖрдВрджреЛрд▓рди?

рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдпрд╣ рдорд╛рдорд▓рд╛ рд╣рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд╛рдкрд╕ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ tsconfig.json рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рдереА рдФрд░ compilerOptions рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ module рд╡рд┐рдХрд▓реНрдк рдХреНрдпреЛрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред

рдЪреВрдВрдХрд┐ extension рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдорд╛рдорд▓рд╛ рдХреЗрд╡рд▓ ES2015+ рдХреЗ рд▓рд┐рдП рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдЗрд╕реЗ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рд▓рдХреНрд╖рд┐рдд рдХреЛрдб ES2015+ рд╣реЛред

  1. .js рдХреЗ рд▓рд┐рдП .ts
  2. .jsx рдХреЗ рд▓рд┐рдП .tsx

рд╣реИрд▓реЛ, рдореИрдВ рдЗрддрдиреА рджреЗрд░ рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдУрдкреА рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдпрд╣ рд╣реИ:

import { ModalBackground } from './ModalBackground';

рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ './ModalBackground' рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдЕрдЧрд░ рд╣рдо рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ tsc рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ ModalBackground.ts рдореМрдЬреВрдж рд╣реИ, рддреЛ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рдирд╣реАрдВ?

рдпрд╣ рдореБрджреНрджрд╛ рднреА рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ RxJS рд╕рдореБрджрд╛рдп рдмрд╣реБрдд рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рд╕рдордп-рд╕реАрдорд╛ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЗрд╕реЗ рднреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рддреА рд╣реИ? рдХреНрдпрд╛ рдХреЛрдИ рддреАрд╕рд░рд╛ рдкрдХреНрд╖ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдЬреЛ рдорджрдж рдХрд░реЗрдЧрд╛?

рдореБрдЭреЗ рд╕рдЪ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдЖрдЙрдЯрдкреБрдЯ рд▓рдХреНрд╖реНрдп ES2015 рд╣реИ? рдпрд╣ рд╢рд╛рдпрдж ES2015рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд╖рдорддрд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ, @justinfagnani рдХреНрдпрд╛ рд╣рдо рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордВрдЪ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬреЛрд░ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? (рд╢рд╛рдпрдж рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдореЗрдВ рдХрд╛рдВрдЯрд╛ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ)ред

рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ, @justinfagnani рдХреНрдпрд╛ рд╣рдо рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордВрдЪ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬреЛрд░ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? (рд╢рд╛рдпрдж рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдореЗрдВ рдХрд╛рдВрдЯрд╛ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ)ред

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

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

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

@justinfagnani рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рд░рд╛рдп рдХреЗ рд╕рд╛рде рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред TS рдПрдХ JS рдлрд╝рд╛рдЗрд▓ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ JS рдХреЛрдб рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред ES6 рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдмрд╕реЗ рдирдЬрд╝рджреАрдХреА рдЪреАрдЬ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд ES6 рдХреЛрдб рдЧрд▓рдд рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдмрдЧ рд╕рд╛рджрд╛ рдФрд░ рд╕рд░рд▓ рд╣реИред рдХрд┐рд╕реА рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдРрд╕реЗ рдореЗрдВ, рдмрд╕ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдмрдЧ рдХреЛ рдареАрдХ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЖрдЬ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╡реЗ рдХрд┐рд╕реА рдЪреАрдЬ рдореЗрдВ рджреЛрд╖ рдирд╣реАрдВ рдвреВрдВрдврддреЗ рд╣реИрдВ рдФрд░ рдЕрднрд┐рдирдп рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреА 10 рдкрд░рддреЛрдВ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдмреМрджреНрдзрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдПрдХ рд╡рд┐рд░рд╛рдо рджреЗрдВред

@aluanhaddad рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рд▓рд╛рдн рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдПрдирдкреАрдПрдо рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ (рдпрд╛ рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдирдкреАрдПрдо рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдн рд╣реЛрдЧрд╛ред

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

@justinfagnani рдЗрд╕реЗ рдЕрднреА рддрдХ рдорд╛рдирдХреАрдХреГрдд рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ npm рд╕рдВрдХреБрд▓ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред

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

рддреЛ рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдореЗрд░реА рдиреЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдерд╛?

рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
https://github.com/Microsoft/TypeScript/issues/16577#issuecomment -343610106

рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╣реА MIME рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдкрд░реЛрд╕рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЖрдВрджреЛрд▓рди?

рд╢рд╛рдпрдж https://github.com/Microsoft/TypeScript/pull/25073 рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

@Kingwl рдХреНрдпрд╛ рдЖрдк рдХреБрдЫ рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗ? рдЬреИрд╕реЗ .mjs .es .esm ред

рд╢рд╛рдпрдж рдирд╣реАрдВ, рдпрд╣ рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ

рдпрд╣ рднреА рдХреИрд╕реЗ рдмрд╛рдд рд╣реИ? рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ _knows_ рдХрд┐ рд▓рдХреНрд╖реНрдп рдЖрдЙрдЯрдкреБрдЯ рдПрдХ JS рдлрд╝рд╛рдЗрд▓ рд╣реИред рдореИрдВ рдЗрди рдереНрд░реЗрдбреНрд╕ рдХреЛ 15 рдорд┐рдирдЯ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдХреНрдпреЛрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЬрд▓реНрдж рд╣реА рдПрдХ рдФрд░ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдпрд╣ рднреА рдХреИрд╕реЗ рдмрд╛рдд рд╣реИ? рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ _knows_ рдХрд┐ рд▓рдХреНрд╖реНрдп рдЖрдЙрдЯрдкреБрдЯ рдПрдХ JS рдлрд╝рд╛рдЗрд▓ рд╣реИред рдореИрдВ рдЗрди рдереНрд░реЗрдбреНрд╕ рдХреЛ 15 рдорд┐рдирдЯ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдХреНрдпреЛрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

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

рдпрд╣ рднреА рдХреИрд╕реЗ рдмрд╛рдд рд╣реИ? рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ _knows_ рдХрд┐ рд▓рдХреНрд╖реНрдп рдЖрдЙрдЯрдкреБрдЯ рдПрдХ JS рдлрд╝рд╛рдЗрд▓ рд╣реИред рдореИрдВ рдЗрди рдереНрд░реЗрдбреНрд╕ рдХреЛ 15 рдорд┐рдирдЯ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдХреНрдпреЛрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

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

рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЙрдбреНрдпреВрд▓ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯ-рдЗрди рдлрд╝реНрд▓реИрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдХреЛ рдорд╛рд░ рджреЗрдЧрд╛? рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рдПрдХ рджрд░реНрдЬрди рдзрд╛рдЧреЗ (рдЦреБрд▓реЗ рдФрд░ рдмрдВрдж рджреЛрдиреЛрдВ) рдЕрднреА рднреА рдЙрддреНрддрд░ рдФрд░ рднреНрд░рдорд┐рдд рдкреНрд░рд╢реНрди рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ TS рдХреА рдХрдореА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ TS рд╣рдорд╛рд░реЗ JS рд╕рдВрдХрдЯреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕ рджреБрдГрдЦ рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

рдЕрд╕реНрд╡реАрдХрд░рдг:

рд╣рд╛рдВ, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рд╕реЗ рдПрдХ рдЯрди рд▓реЛрдЧ рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рдЖрдкрдиреЗ рд╡реЗрдмрдкреИрдХ рдХреА рд╢реБрд░реБрдЖрдд рдХреА" рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рд╕реНрддрдиред рдпрд╣ рдСрдкреНрдЯ-рдЗрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд░реЛрдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреБрджрд╛рдИ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ importModuleSpecifierEnding рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ - рдХреНрдпрд╛ рдпрд╣ (ab) рдПрдорд┐рдЯрд░ рдХреЛ .js рдЕрдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ tsconfig рд╕реНрдХреАрдорд╛ рдХреЗ рд╕рд╛рде рдорд╢ рдХрд░реЗрдВ? https://github.com/domenic/package-name-maps

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

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

рдпрд╣ рднреА рдХреИрд╕реЗ рдмрд╛рдд рд╣реИ? рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ _knows_ рдХрд┐ рд▓рдХреНрд╖реНрдп рдЖрдЙрдЯрдкреБрдЯ рдПрдХ JS рдлрд╝рд╛рдЗрд▓ рд╣реИред рдореИрдВ рдЗрди рдереНрд░реЗрдбреНрд╕ рдХреЛ 15 рдорд┐рдирдЯ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдХреНрдпреЛрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

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

рдлрд┐рд░, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХреЗ рдпрд╛ рдирд╣реАрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдиреЗ (рдпрд╛ рдирд╣реАрдВ) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдЧреЗрдХреНрд╕ рдХрд╛ рдПрдХ рд╕реЗрдЯ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХреЗ, рдЬреИрд╕реЗ рд╡рд┐рдХрд▓реНрдк рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ (https://www.typescriptlang.org/docs/handbook/tsconfig-json.html)ред

рд╣рд╛рдБ, рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рдкрд╣рд▓реЗ рд╣реА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдХреНрдпреЛрдВ рди рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдП? TS рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдХ рдмрд╛рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдмрджрд▓ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди TS рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрди рдЕрд╕реНрдерд┐рд░ рдЪрд╢реНрдореЗ рдХреЗ рд▓рд┐рдП рдЭрдВрдбреЗ рд╣реИрдВред рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдзреНрд╡рдЬ addImportsExtensions рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдХреЗрд╡рд▓ module += '.js' рдХрд░реЗрдЧрд╛, рдмрд╕! рдХреЛрдИ рдлрдВрдХреА рд▓реЙрдЬрд┐рдХ рдирд╣реАрдВ, рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдлреАрдЪрд░ рдирд╣реАрдВред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓рдХреНрд╖реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ tsc рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрджреВрдВрдЧрд╛ рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ PR рдмрдирд╛рдКрдВрдЧрд╛, рдмрд╕ рдЕрдкрдирд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдЕрдЧрд░ рдЗрд╕реЗ рд╡реИрд╕реЗ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдк рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХреЛрдб рдореЗрдВ рдЖрдпрд╛рдд рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рдХрд╕реНрдЯрдо рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ('.js' рдЬреЛрдбрд╝рдХрд░ рдпрд╛ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХреЗ рд╣рд▓ рдХрд┐рдП рдЧрдП рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ
ttypescript: tsc рдХреЗ рд▓рд┐рдП рд░реИрдкрд░ рдЬреЛ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ

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

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

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

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

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдареАрдХ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдзреНрд╡рдЬ рд╣реИ рдЬрд┐рд╕реЗ 3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рдПрдХ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдерд╛ рдЬреЛ рдЕрдм рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред

рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЧрд▓рдд рд╕реНрд░реЛрдд рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ

рдореИрдВ рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕рдВрдХрд▓рдХ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдкрдереЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рдЖрдпрд╛рдд рдХреЛ "рдЧрд▓рдд" рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВред рдореИрдВ

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

  1. рдХреНрдпрд╛ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдЯреАрдо рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ?
  2. рдпрджрд┐ рд╣рд╛рдБ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдкреАрдЖрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВрдЧреЗ?
  3. рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдХрдм рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?

рдпрджрд┐ рдкрд╣рд▓реЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ 'рдирд╣реАрдВ' рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдмрдВрдж рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╢рд┐рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рдЕрдЧрд░ рдпрд╣ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рддреЛ рджреВрд╕рд░реЛрдВ рдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рди рдХрд░реЗрдВред

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдареАрдХ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдзреНрд╡рдЬ рд╣реИ рдЬрд┐рд╕реЗ 3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рдПрдХ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдерд╛ рдЬреЛ рдЕрдм рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред

рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЧрд▓рдд рд╕реНрд░реЛрдд рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ

рдореИрдВ рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕рдВрдХрд▓рдХ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдкрдереЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рдЖрдпрд╛рдд рдХреЛ "рдЧрд▓рдд" рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВред рдореИрдВ

рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдмрд┐рдВрджреБ рд╣реИ @DanielRosenwasser , рдореИрдВрдиреЗ рдЕрднреА рдЕрдкрдирд╛ рдХреЛрдб рд╕рд╣реА рдорд╛рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдкреЗрдХ (https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#11.3) рдХреЛ рдкрдврд╝рдирд╛ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИред

рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдкреЗрдХреНрд╕ рдкрдврд╝ рд▓рд┐рдП рд╣реИрдВред рдХрд▓реНрдкрдирд╛ рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВред рдЪрд╢реНрдореЗ рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХреЛ HostResolveImportedModule рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рднрд╛рд╖рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдкреЗрдХ рдирд╣реАрдВ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдРрдирдХ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд [ModuleRequest] рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрде рдерд╛ред

рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдмрд╕ рднрд╛рд╖рд╛ рдХреЗ рд╣реЛрдо рдкреЗрдЬ рдкрд░ рдЬрд╛рдПрдВ: https://www.typescriptlang.org/ ред

рдкреГрд╖реНрда рдХреЗ рдкрд╛рдж рд▓реЗрдЦ рдореЗрдВ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ:

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдФрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдЪреНрдЫ, рд╕рд░рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░, Node.js рдореЗрдВ, рдпрд╛ рдХрд┐рд╕реА рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ рдЬреЛ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3 (рдпрд╛ рдирдпрд╛) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред


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

рдЬреИрд╕рд╛ рдХрд┐ @Draccoz рдмрддрд╛рддрд╛ рд╣реИ, рд╣рдо рд╕рд┐рд░реНрдл рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдЕрдВрдХ рдореЗрдВ рдЕрдкрдиреЗ рд╣реЛрдо рдкреЗрдЬ рдореЗрдВ рдПрдХ рдмрд╛рдд рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрддреА рд╣реИред

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдмрд╣реБрдд рд╢рд╛рдмреНрджрд┐рдХ рд╣реИред рдЬрдм рдЖрдк рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддреЛ var fs = require('fs') рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, HTMLDivElement рдиреЛрдб рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдФрд░ String.prototype.startsWith рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЛрдЧреЛрдВ рдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд╣рд░ рдЯреВрд▓ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА/рдкреЙрд▓реАрдлрд┐рд▓ рдмрдирд╛рдП рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡реНрдпрд╛рдкрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред

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

@DanielRosenwasser рдЖрдкрдХреА рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреБрджреНрдзрд┐рдорд╛рди рд╡рд┐рдХрд▓реНрдк рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдмрд╣реБрдд рд╢рд╛рдмреНрджрд┐рдХ рд╣реИред рдЬрдм рдЖрдк рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддреЛ var fs = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('fs') рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, HTMLDivElement рдХреЛ рдиреЛрдб рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ String.prototype.startsWith рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЛрдЧреЛрдВ рдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд╣рд░ рдЯреВрд▓ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА/рдкреЙрд▓реАрдлрд┐рд▓ рдмрдирд╛рдП рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡реНрдпрд╛рдкрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред

рдмреЗрд╢рдХ рдпрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рдФрд░ рдХреНрдпрд╛ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдмрд╣реБрдд рд╢рд╛рдмреНрджрд┐рдХ рд╣реИ, рдпрд╣ рддрдереНрдп рдЙрддрдирд╛ рд╣реА рд╕рдЪ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╛рда рдХрд┐рд╕реА рдХреЛ рднреА "рднреНрд░рдорд┐рдд" рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (https://www.typescriptlang.org/docs/handbook/modules.html) рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХреЗрдВред

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

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

рдореЗрд░реЗ рдЬреИрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЬ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ ES рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ, рдореБрдЭреЗ https://github.com/guybedford/es-module-shims рдорд┐рд▓рд╛ред рдпрд╣ рдкреИрдХреЗрдЬ рдирд╛рдо рдХреЗ рдирдХреНрд╢реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреЙрд▓реАрдлрд┐рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╣рдо рдХрд▓реНрдкрдирд╛ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЯреАрдПрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реЗ рдЕрд▓рдЧ) рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм рдРрдк рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп рдпрд╣ рдХрд┐рд╕реА рднреА рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ (рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рднреА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА @QuantumInformation рдХреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

import 'knockout'

export class MyViewModel {
    greeting: KnockoutObservable<string>
    target: KnockoutObservable<string>
    constructor() {
        this.greeting = ko.observable('hello')
        this.target = ko.observable('world')
    }
}
<!DOCTYPE html>


md5-f28d4b503a1603c40bfeb342f341bfbe


<main>
    <span data-bind='text: `${greeting()} ${target()}`'></span>
    <script type='module-shim'>
        import 'knockout'
        import { MyViewModel } from 'index'
        ko.applyBindings(new MyViewModel())
    </script>
</main>

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рдмрд╛рд░ рдЬрдм рдкреИрдХреЗрдЬ рдирд╛рдо рдорд╛рдирдЪрд┐рддреНрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдиреА HTML рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ type='module-shim' рдХреЛ type='module' $ рдХреЗ рд╕рд╛рде рдвреВрдВрдв/рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреИрдХреЗрдЬрдореИрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреИрдХреЗрдЬрдореИрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдЙрд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдХрд▓реНрдкрдирд╛

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

@weswigham рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╣реБрдд рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ tsc (рдФрд░ рдХреНрд▓рд╛рд╕рд┐рдХ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди) рдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ ./foo рдФрд░ ./foo.js рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрдирдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВрдЧреЗ, рднрд▓реЗ рд╣реА рд╡реЗрдмрд╕рд░реНрд╡рд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдЖрдпрд╛рдд рдкрд░ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВред

рд╡реИрд╕реЗ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрддреНрдкрдиреНрди рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдЬ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЛрдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддреА рд╣реИред рдмрд╕ рд╣рдореЗрд╢рд╛ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВред tsc рд╕рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ .ts рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрддрддрд╛ рдорд┐рд▓рддреА рд╣реИред

@weswigham рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рд╡реЗрдмрд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд┐рдирд╛ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЧрд┐рдЯрд╣рдм рдкреЗрдЬ, рдЖрдИрдкреАрдПрдлрдПрд╕, рдПрд╕ 3, рдЖрджрд┐ред рд╕рд┐рдВрдЧрд▓ рдкреЗрдЬ рдРрдк рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, "рд╕рд░реНрд╡рд░рд▓реЗрд╕" рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЖрдо рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдЬрд╣рд╛рдВ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрд╛ рдорддрд▓рдм рд╕рд░реНрд╡рд░ рдХреЗ рдмрд┐рдирд╛ рдЖрдк рдЕрдкрдиреА рд╕рдВрдкрддреНрддрд┐ рдХреА рд╕реЗрд╡рд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд/рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рдЖрдк apple рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ apple.js рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдлрд╝рд┐рд▓реНрдЯрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдЖрдпрд╛рдд рдкрд░ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВред

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

рдмрд╕ рд╣рдореЗрд╢рд╛ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ

рд╣рд╛рдБ, рдпрд╣ рднреА рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@QuantumInformation рдХреНрдпрд╛ рдпрд╣рд╛рдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдкрдХрд╛ рд╕реНрдирд┐рдкреЗрдЯ рдЦреБрд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреЗ рд▓рд┐рдП рд╣реИ? рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдореИрдВ

@distante рд╣рд╛рдБ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

FYI рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЬреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕реНрд░реЛрдд рдореЗрдВ .js рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдпрд╣ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ
рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

  "jest": {
    ...
    "moduleNameMapper": {
      "(.*)\\.js": "$1"
    }
  }

рд╣реИрд▓реЛ @MrAntix ,

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

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рд╕рд╛рдЗрдЯ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдПрдХ рдмрд┐рд▓реНрдб рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рд╣рдо рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд╣реИрдВ:

https://github.com/microsoft/TypeScript/issues/16577#issuecomment -452312753

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рднрд▓реЗ рд╣реА рдЗрд╕рдХреА рдПрдХ ts рдлрд╝рд╛рдЗрд▓, рдЬреЗрдПрд╕ рдирд╣реАрдВ)

Screenshot 2019-06-05 at 22 47 49

рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕реЗ рдЖрдЬрдорд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ:
https://github.com/QuantumInformation/web-gen-bot

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рд╡рд░реНрддрдорд╛рди tsconfig рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдбрд┐рдмрдЧрд┐рдВрдЧ рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛, рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реВрдВрдЧрд╛ред

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

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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рдЪрд░реНрдЪрд╛ рджреЛ рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдХрд┐рди рдЕрдВрддрддрдГ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЛрдВ рдореЗрдВ рдмрджрд▓ рдЧрдИ рд╣реИ:

  • рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдРрд╕реА рдлрд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрд╕ рддрдереНрдп рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рдкрде рд╣рдореЗрд╢рд╛ рдорд╛рдиреНрдп URL рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдореБрджреНрджреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджреВрд╕рд░рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкрдиреЗ рдЖрдк рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдореБрджреНрджрд╛ рдпрд╣реАрдВ рддрдХ рдЙрдмрд▓рддрд╛ рд╣реИ:

рдпрджрд┐ tsc рдЪрд▓рд╛рдиреЗ рд╕реЗ $ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирддреА рд╣реИ рдФрд░ рдлрд┐рд░ рджреВрд╕рд░реА рдлрд╝рд╛рдЗрд▓ рдЬреЛ рдкрд╣рд▓реА .js рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░рддреА рд╣реИ, рддреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдкред

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

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

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

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

рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗрдмрдкреИрдХ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрднреА-рдХрднреА рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде .js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ (рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдХреНрд╕рдЯреЗрдВрд╢рди)ред

рддреЛ рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде .js рдЖрдпрд╛рдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдЬрдм рдореИрдВ I don't want рдХрд╣рддрд╛ рд╣реВрдВ рддреЛ рдореЗрд░рд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ рдореБрдЭреЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдзреНрд╡рдЬ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рдЪреНрдЫреБрдХ ...)

рдЖрдпрд╛рдд рдХреЛ .js рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ ts-рдиреЛрдб рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ ts-рдиреЛрдб рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА require('./foo.js') рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ рддреЛ рдЬрдм рдиреЛрдбрдЬ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рддреЛ рд╡рд╣ ./foo.js рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ рдЬреЛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдбрд┐рд╕реНрдХ рдкрд░ рдХрд╣реАрдВ рднреА рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЬрдм рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ( ./foo ) рджреВрд╕рд░реА рдУрд░, ts-рдиреЛрдб рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рд╡рд╣ ./foo.ts рдХреЛ JS рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ ts-node рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЪрд▓реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдХреЛрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЯреЙрдЧрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИ рддреЛ ts-рдиреЛрдб рдЙрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдореМрдЬреВрджрд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдЪреВрдВрдХрд┐ Node.js --experimental-modules рдХреЗ рд▓рд┐рдП рдЕрдирд┐рд╡рд╛рд░реНрдп рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдирд┐рд░реНрднрд░рддрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕реАрдзрд╛ рд╣реИ - --jsext рдЬреИрд╕рд╛ рд╡рд┐рдХрд▓реНрдк рдХрд┐рд╕реА рднреА .ts рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ .js рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ .ts рдЬреИрд╕реЗ import 'npmpkg.ts' рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдорд╛рдорд▓рд╛ рдЕрддреНрдпрдВрдд рджреБрд░реНрд▓рдн рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓реНрдк рдореЗрдВ рдЗрд╕реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо _bare рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ_ рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдпрджрд┐ рдирдВрдЧреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ (рдпреВрдЖрд░рдПрд▓ рдирд╣реАрдВ, рдпрд╛ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде) рдПрдХ рд╡реИрдз рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдирд╛рдо рд╣реИ ( рдорд┐рд▓рд╛рди /^(@[-_\.a-zA-Z\d]+\/)?[-_\.a-zA-Z\d]+$/ , https://github.com/npm/validate-npm-package-name рд╕реЗ), рдлрд┐рд░ рдкреБрдирд░реНрд▓реЗрдЦрди рдореЗрдВ .ts рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдПрдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд рдкрде рдкрд░ .js рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреА .ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ import { Foo } from './foo' рд╣реИ рддреЛ рдпрд╣ import { Foo } from './foo.js' рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░реЗрдЧреАред рдпрд╣ рдПрдирдкреАрдПрдо рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реАрдбрдореА рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

https://github.com/Zoltu/typescript-transformer-append-js-extension

рдЕрдЧрд░ рдРрд╕рд╛ рдХреБрдЫ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ (рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ) рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрд╢рд┐рдпрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдХрдм рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдФрд░ рдХрдм рдирд╣реАрдВред рдЕрднреА рдпрд╣ ./ рдпрд╛ ../ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдкрде рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкрде рдореЗрдВ рдХрд╣реАрдВ рднреА . рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдХрдИ рдПрдЬ рдХреЗрд╕ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╕рд╣реА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╕рд╡рд╛рд▓ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдИ рднреА _actually_ рдЙрди рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЪрд▓реЗрдЧрд╛ рдпрд╛ рдирд╣реАрдВред

@MicahZoltu рдЗрд╕рдХреЗ рд▓рд┐рдП рдпреВрдЬрд░рд▓реИрдВрдб рд╕рдорд╛рдзрд╛рди рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ , рдЬреИрд╕реЗ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдХрд▓реНрдк _turn .ts рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓_ рдмрди рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдВрдХрд▓реНрдк рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдирд╛рдореЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬреЛ ".ts" рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИред

@guybedford .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ .ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдлрд╝рд╛рдЗрд▓ ts-node рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ NodeJS рдлрд╝рд╛рдЗрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд░рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдХрд╛рд░рдг ts-рдиреЛрдб рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЧреИрд░-рддреБрдЪреНрдЫ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╣рд╛рд░реНрдб рдХреЛрдбрд┐рдд .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ts-рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред рдЗрд╕ рдкрд░ https://github.com/TypeStrong/ts-node/issues/783 рдкрд░ рдЪрд░реНрдЪрд╛ рджреЗрдЦреЗрдВред

@MicahZoltu рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп .ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ .ts рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ред

@guybedford рдПрдХ .ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рд╣рд┐рдд рдЗрд╕реЗ рдмрдирд╛рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ ts-рдиреЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдпрд╣ рдЕрднреА рддрдХ рдПрдХ рдФрд░ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдиреЛрдб рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдСрдЯреЛ-рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯрд┐рдВрдЧ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

@MicahZoltu рдореЗрд░рд╛ рдорддрд▓рдм .ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ .ts рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИред

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

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЗ рдмрд┐рдирд╛ рдорд╛рдирдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ .tsconfig рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рдХрд╕реНрдЯрдо рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред $#$ .js $#$ рдХреЗ рдмрдЬрд╛рдп .ts рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЫреЛрдЯреЗ рд▓рд╛рдн рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рдмрд╛рдзрд╛ рд╣реИред

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

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

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЗ рдмрд┐рдирд╛ рдорд╛рдирдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЬрдмрдХрд┐ рдПрдХ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --ts-to-js рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдлреНрд▓реИрдЧ/рд╡рд┐рдХрд▓реНрдк рдХреА рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@guybedford рдЖрдкрдиреЗ рдореБрдЭреЗ рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП .ts рдбрд╛рд▓рдирд╛ рд╕рд╣реА рдХрд╛рдо рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдкрд░ рдореИрдВрдиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ!

// foo.ts
export function foo() { console.log('foo') }
// bar.ts
import { foo } from './foo.ts' // Error: An import path cannot end with a '.ts' extension. Consider importing './foo' instead
foo()

рд╣реИрд▓реЛ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?


рдЗрдирдкреБрдЯ:

// src/lib.js.ts
export const result = 42;
// src/index.js.ts
import { result } from "./lib.js";

console.log(result);

рдЖрдЙрдЯрдкреБрдЯ:

// build/lib.js
export const result = 42;
// build/index.js
import { result } from "./lib.js";

console.log(result);

рдореБрджреНрджрд╛ #30076

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

@MicahZoltu рдХрд┐ .ts рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ, рд╕рдВрднрд╡рддрдГ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд╛рдн рдХреЗ рд▓рд┐рдП рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ .ts рд╕реЗ .js рд╕рдВрдХрд▓рди рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдкреБрдирд░реНрд▓реЗрдЦрди рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рднреА .ts рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдзреНрд╡рдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ :)

рд╕рдВрднрд╡рддрдГ .ts рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕рдорд░реНрдерд┐рдд рдХрд░рдиреЗ рдФрд░ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рд╕рдВрднрд╡рддрдГ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдзреНрд╡рдЬ рдХреЗ рдиреАрдЪреЗ, рд▓реЗрдХрд┐рди рдПрдХ рдзреНрд╡рдЬ рдЬрд┐рд╕реЗ рд╕рдордп рдкрд░ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ рдЗрд╕ рд░рд╛рд╕реНрддреЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

//cc @DanielRosenwasser

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

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ import s рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ JS/TS рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ! ESM рдореЗрдВ, рдХреЛрдИ рднреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рддрдм рддрдХ рдорд╛рдиреНрдп рд╣реИ рдЬрдм рддрдХ рдХрд┐ MIME рдкреНрд░рдХрд╛рд░ рд╕рд╣реА рд╣реИред

import actuallyCode from './lookLikeAnImage.png';

... рддрдм рддрдХ рдорд╛рдиреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рд╕рд░реНрд╡рд░ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░реЛрд╕рддрд╛ рд╣реИ рдФрд░ рд╕рд╣реА MIME рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдФрд░ рдЖрдЧреЗ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ TS рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╕рдЪ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ! рдПрдХ TS рдлрд╝рд╛рдЗрд▓ JS MIME рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдкрд░реЛрд╕рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ JS рд╕реНрд░реЛрдд рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП ESM рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдиреНрдп рдкрде рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдпрд╣ рдЗрд╕реЗ рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдХреБрдЫ рдЕрдиреНрдп рдореБрджреНрджреЗ рджреЗрдЦреЗ: #18971, #16640, #16640 рд▓реЗрдХрд┐рди рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдореБрджреНрджреЗ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдмрдВрдж рд╣реЛ рд░рд╣реЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "рдореБрдЦреНрдп" рд╣реИ рдЪреВрдВрдХрд┐ рдЗрд╕реЗ рдЦреБрд▓рд╛ рд░рд╣рдиреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

NodeJS v12.7.0 . рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛

salathiel@salathiel-genese-pc:~/${PATH_TO_PROJECT}$ node --experimental-modules dist/spec/src/ioc
(node:15907) ExperimentalWarning: The ESM module loader is experimental.
internal/modules/esm/default_resolve.js:59
  let url = moduleWrapResolve(specifier, parentURL);
            ^

Error: Cannot find module '${PROJECT_ROOT}/dist/spec/src/ioc' imported from ${PROJECT_ROOT}/
    at Loader.resolve [as _resolve] (internal/modules/esm/default_resolve.js:59:13)
    at Loader.resolve (internal/modules/esm/loader.js:73:33)
    at Loader.getModuleJob (internal/modules/esm/loader.js:149:40)
    at Loader.import (internal/modules/esm/loader.js:133:28)
    at internal/modules/cjs/loader.js:830:27
    at processTicksAndRejections (internal/process/task_queues.js:85:5) {
  code: 'ERR_MODULE_NOT_FOUND'
}
salathiel@salathiel-genese-pc:~/${PATH_TO_PROJECT}$ node --experimental-modules dist/spec/src/ioc.js
(node:16155) ExperimentalWarning: The ESM module loader is experimental.
internal/modules/esm/default_resolve.js:59
  let url = moduleWrapResolve(specifier, parentURL);
            ^

Error: Cannot find module '${PROJECT_ROOT}/dist/spec/src/observe' imported from ${PROJECT_ROOT}/dist/spec/src/ioc.js
    at Loader.resolve [as _resolve] (internal/modules/esm/default_resolve.js:59:13)
    at Loader.resolve (internal/modules/esm/loader.js:73:33)
    at Loader.getModuleJob (internal/modules/esm/loader.js:149:40)
    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:43:40)
    at link (internal/modules/esm/module_job.js:42:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}

рдЕрдм, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░реЗрд╢рд╛рди рдХреНрдпреЛрдВ рд╣реИ ...

рдлрд┐рд▓рд╣рд╛рд▓ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрдереЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрд╡рдпрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

@DanielRosenwasser https://github.com/microsoft/TypeScript/issues/16577#issuecomment-309169829

рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдкреАрдЫреЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? --rewrite-paths ( rewritePaths: true ) рдХреА рддрд░рд╣?

@viT-1 рдлрд┐рд▓рд╣рд╛рд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ: https://github.com/microsoft/TypeScript/issues/16577#issuecomment -507504210

@MicahZoltu рдореИрдВ рд╕рд┐рд╕реНрдЯрдордЬреЗрдПрд╕ рдмрдВрдбрд▓рд┐рдВрдЧ (tsconfig outFile рд╡рд┐рдХрд▓реНрдк) рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛ рдЙрдкрдпреЛрдЧрдХреЗрд╕ рд╣рд▓ рдХрд░рддрд╛ рд╣реВрдВ

рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреА рдЧрдИ рд╣рд░ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдореБрдЭреЗ .js рдПрдХ рдЧрдЬрд┐рдпрди рдмрд╛рд░ рдХреНрдпреЛрдВ рд▓рд┐рдЦрдирд╛ рд╣реИред рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд░реЗред

@richardkazuomiller рд╣рдо рд╕рдм рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди @DanielRosenwasser рдиреЗ https://github.com/microsoft/TypeScript/issues/16577#issuecomment -448747209 рдореЗрдВ рдХрд╣рд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ (рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЕрднреА рднреА рднреНрд░рд╛рдордХ рд░реВрдк рд╕реЗ рдЦреБрд▓рд╛ рд╣реИ) рдЙрдкрд░реЛрдХреНрдд рдХрдерди рдХреЗ рдмрд╛рдж рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП)ред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░реЗ, рддреЛ рдЖрдпрд╛рдд рдкрде рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓рд░ рдпрд╛ рдХрд┐рд╕реА рддреГрддреАрдп рдкрдХреНрд╖ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдХреМрди рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджреВрдВ?

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

@TomasHubelbauer рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдзреНрд╡рдЬ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди-рдХрдо рдЖрдпрд╛рддреЛрдВ рдореЗрдВ .js (рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдСрдкреНрдЯ-рдЗрди рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдЬрд░реВрд░рддреЛрдВ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛:

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ TS рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдиреЗ рдЗрд╕реЗ рдЬреЛрдбрд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди ' ./file.js' рдЬреИрд╕реЗ рдЖрдпрд╛рдд рдЕрдм рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ (рднрд▓реЗ рд╣реА рдлрд╝рд╛рдЗрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ file.ts рд╣реЛ)ред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдареАрдХ рд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг .js рдЖрдпрд╛рдд рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рд╡реИрдз рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡реИрдз рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдЪреВрдВрдХрд┐ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

import foo from './bar.js'

... JS рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕реЗ TS рдореЗрдВ рднреА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдореВрд▓ ES6 рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рд╣реА рдХрд░ рд▓рд┐рдП рд╣реИрдВред


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

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

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

рдЬрдм рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рддреЛ NodeJS рдЕрдм _by default_ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рдПрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЯреАрдПрд╕рд╕реА рдХреЗ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЬреЗрдПрд╕ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рд░рдирдЯрд╛рдЗрдо рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдм рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдИрдПрд╕рдПрдо рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдиреЛрдбрдЬреЗрдПрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рджреЛрдиреЛрдВ рдкрд░ рд╕реНрдкрд╖реНрдЯрддрд╛ рд╣реИред

https://nodejs.org/api/esm.html#esm_customizing_esm_specifier_resolution_algorithm

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

рдпрджреНрдпрдкрд┐! рдЬрдмрдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ _рдЕрд╕рд╣рдорддрд┐_ рд╣реИ рдФрд░ _рдХреБрдЫ рд▓реЛрдЧ рддрдереНрдп_ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╛рдЬреНрдп рдХреА рд░рд╛рдп рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдЧреЗ, рдЕрднреА рднреА рдПрдХ --es-module-specifier-resolution=node рдзреНрд╡рдЬ рд╣реИ рдЬреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡рд┐рд╕реНрддрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрди рд╕рдХрддрд╛ рд╣реИ - рдЬреИрд╕рд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╣рддреЗ рд╣реИрдВ, рдзреНрд╡рдЬрд╛рдВрдХрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж , рдиреЛрдб рдореЗрдВ es рдореЙрдбреНрдпреВрд▓ _рдЕрднреА рднреА рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ_ рд╣реИрдВред

рд╕рд╛рде рд╣реА, рдореВрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ: рд╣рдо рдЖрдпрд╛рдд рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдХрднреАред рдмрд┐рд▓рдХреБрд▓ред рдирд┐рд░реНрджрд┐рд╖реНрдЯрдХрд░реНрддрд╛ === рдирд┐рд░реНрджрд┐рд╖реНрдЯрдХрд░реНрддрд╛ рдмрд╛рд╣рд░ред рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЖрд╢рдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдЗрдЪреНрдЫрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рджреВрд╕рд░реА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рдореИрдк рдХрд░реЗрдВред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рднреА рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ: рдпрджрд┐ рдЖрдкрдиреЗ const varFoo = "./Foo"; import(varFoo) рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╣рдо рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдХрд┐рд╕реА рддрд░рд╣ рд╡рд╣рд╛рдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ? рдирд╣реАрдВ - рдпрд╣ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ - рдЧрддрд┐рд╢реАрд▓ рдЗрдирдкреБрдЯ рдХреЗ рд╕рднреА рд░реВрдкреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдЕрдЪрд╛рдирдХ рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рдмрди рдЧрдП рд╣реИрдВ, рдмрд┐рд▓реНрдЯрд┐рди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд▓реЛрдбрд░ рдХреЗ рдКрдкрд░ рдкрд░рддред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдореЛрдб рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрдиреЗ рдкрд░ рдЙрдЪрд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рдХрд┐, рдЖрдк рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдВрдЯ рдирд┐рдпрдо рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ)ред

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

рдЕрдЪрд╛рдирдХ рд╣рдо рдЦреБрдж рдХреЗ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рдмрди рдЧрдП рд╣реИрдВ

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

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

рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд░реНрдерд┐рдд рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдореЗрдВ .js рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рдФрд░ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ? рдпрд╣ рд╕рдм рдХреБрдЫ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ tsc рд╡рд┐рд╕реНрддрд╛рд░рд╣реАрди рдЖрдпрд╛рдд рдкрд░ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рд╣реЛред

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

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

рдХреНрдпрд╛ рдЯреАрдПрд╕рд╕реА рдХреЛ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛?

рд░рдирдЯрд╛рдЗрдо рдкрд░ рдирд╣реАрдВред tsc рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдкрд╕рдВрдж рдХрд╛ рд░рдирдЯрд╛рдЗрдо рдХреИрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдкрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд░рдирдЯрд╛рдЗрдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рднреА рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ: рдпрджрд┐ рдЖрдкрдиреЗ const varFoo = "./Foo" рд▓рд┐рдЦрд╛ рд╣реИ; import(varFoo) рдХреНрдпрд╛ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ рд╡рд╣рд╛рдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝реЗрдВрдЧреЗ?

@weswigham рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рдордЬрдмреВрдд рддрд░реНрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдк рд╕реНрдерд┐рд░ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдЗрд╕ рддрд░реНрдХ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд░рдгрдиреАрддрд┐ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рд╕реНрдерд┐рд░ рдЖрдпрд╛рдд рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕реНрдерд┐рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд░рдгрдиреАрддрд┐ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХрдореБрд╢реНрдд _рдЕрдиреБрдЪрд┐рдд_ рд╣реИ рдЖрдпрд╛рдд рдкреБрдирд░реНрд▓реЗрдЦрди рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд рдкреБрдирд░реНрд▓реЗрдЦрдиред

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдФрд░ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕реЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХреЛрдВ рдореЗрдВ .js рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рд╕рдм рдХреБрдЫ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ tsc рдиреЗ рд╡рд┐рд╕реНрддрд╛рд░рд╣реАрди рдЖрдпрд╛рдд рдкрд░ рддреНрд░реБрдЯрд┐ рдХреАред

@justinfagnani рдЗрд╕рдХреЗ рд╕рд╛рде рджреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ:

  1. рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдпрд╛рдд рдкрд░ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдПрдХ рд░рдирдЯрд╛рдЗрдо рдЬреЛ TS рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ TS-Node) рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣реЗрдЧрд╛ред
  2. рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдпрд╛рдд рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдХрдВрдкрд╛рдЗрд▓рд░ (IMO) рд╕реЗ рдЭреВрда рдмреЛрд▓ рд░рд╣реЗ рд╣реИрдВред

(2) рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдпрджрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рджреЛ TS рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ a.ts рдФрд░ b.ts рдФрд░ a.ts рдХрд░рддрд╛ рд╣реИ import ... from './b.js' , рддреЛ рдореИрдВ рд╕рдВрдХрд▓рдХ рдХреЛ рдмрддрд╛ рд░рд╣рд╛ рд╣реВрдВ" рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╣реЛрджрд░ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдирд╛рдорд┐рдд b.js ред рдпрд╣ рдХрдерди рд╕рддреНрдп рдирд╣реАрдВ рд╣реИред рдорд╛рдорд▓реЗ рдХреЛ рдмрджрддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ .b.ts рдФрд░ b.js (рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ) рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдм рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ _рднрд▓реЗ рд╣реА рдЖрдкрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди_ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реЛред

рдореЗрд░реА рд░рд╛рдп рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрдХрд▓рдХ рдХреЛ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ) рдФрд░ рд╡рд╣ рд╣реИ рдпрд╛ рддреЛ "X рдФрд░ рдХрд┐рд╕реА рднреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдирд╛рдо рд╕реЗ рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░реЗрдВ" ( import ... from './foo' рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) ) рдпрд╛ "рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВ" ( import ... from './foo.ext' рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ)ред рдпрджрд┐ рд╕рдВрдХрд▓рдХ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ TS рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╕рдВрдХрд▓рдХ рдПрдХ .js рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ, рддреЛ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рдХреЛ рдЙрдЪрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдореЗрдВ .ts рдХреЛ .js рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@justinfagnani рдЗрд╕рдХреЗ рд╕рд╛рде рджреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ:

  1. рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдпрд╛рдд рдкрд░ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд░рдирдЯрд╛рдЗрдо рдЬреЛ TS рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ TS-Node) рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣реЗрдЧрд╛ред

рдпрд╣ рдЯреАрдПрд╕-рдиреЛрдб рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИред рдпрд╣ tsc рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд░рд╣рд╛ рд╣реИред

  1. рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдпрд╛рдд рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдХрдВрдкрд╛рдЗрд▓рд░ (IMO) рд╕реЗ рдЭреВрда рдмреЛрд▓ рд░рд╣реЗ рд╣реИрдВред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдкрд░реАрдд рд╣реИ - рдЖрдк рд╕рдЪ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк _not_ .ts рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдПрдХ .js рдлрд╝рд╛рдЗрд▓ред .d.ts / .js рдЬреЛрдбрд╝реА рдФрд░ .ts рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмреАрдЪ рдХреЛрдИ рджреГрд╢реНрдпрдорд╛рди рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реЗ рд╡рд┐рдирд┐рдореЗрдп рд╣реИрдВред рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдЙрдЪрд┐рдд рддрд░реАрдХрд╛ .js рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реИ - рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж .ts рдлрд╝рд╛рдЗрд▓ рдХреНрдпрд╛ рд╣реЛрдЧреАред

@justinfagnani

.d.ts/.js рдЬреЛрдбрд╝реА рдФрд░ .ts рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмреАрдЪ рдХреЛрдИ рджреГрд╢реНрдп рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

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

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

рдпрд╣ рдЯреАрдПрд╕-рдиреЛрдб рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИред рдпрд╣ рдЯреАрдПрд╕рд╕реА рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд░рд╣рд╛ рд╣реИред

рдпрд╣ NodeJS рд▓реЛрдбрд░ рдХреА рдПрдХ рд╕реАрдорд╛ рд╣реИ, TS-рдиреЛрдб рдореЗрдВ рдмрдЧ рдирд╣реАрдВ: https://github.com/TypeStrong/ts-node/issues/783#issuecomment -507437929

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

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

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░рд╛ рдХрд╣рдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ .js / .d.ts рдХреА рдЬреЛрдбрд╝реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реИ, рддреЛ рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдХрд┐рд╕реА рддреГрддреАрдп рдкрдХреНрд╖ рдкреИрдХреЗрдЬ рд╕реЗ рд╣реИ, рдФрд░ .js рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░реЗрдВ, рддреЛ tsc .d.ts рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ рдФрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВред рдпрд╛рдиреА, рдПрдХ .js / .d.ts рдЬреЛрдбрд╝реА _acts_ рдПрдХ .ts рдлрд╝рд╛рдЗрд▓ рдХреА рддрд░рд╣, рдФрд░ рдпрд╣ рдРрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдмрд┐рдирд╛ рдмрджрд▓реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдкреЛрд░реНрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЖрдпрд╛рддред

рдпрд╣ рдЯреАрдПрд╕-рдиреЛрдб рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИред рдпрд╣ рдЯреАрдПрд╕рд╕реА рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛ рд░рд╣рд╛ рд╣реИред

рдпрд╣ NodeJS рд▓реЛрдбрд░ рдХреА рдПрдХ рд╕реАрдорд╛ рд╣реИ, TS-рдиреЛрдб рдореЗрдВ рдмрдЧ рдирд╣реАрдВ: TypeStrong/ts-node#783 (рдЯрд┐рдкреНрдкрдгреА)

рдпрд╣ рдЕрднреА рднреА рдПрдХ рдмрдЧ рд╣реИ рдХрд┐ TS-Node tsc рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╣ .ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ tsc рдФрд░ TS-Node рджреЛрдиреЛрдВ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ tsc рдХреЛ рдорд╛рдирдХ-рд╕реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреВрдВрдЧрд╛ рдЬрд┐рд╕рдХрд╛ TS-Node рдХреЛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП .

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

рдпрджрд┐ рдЖрдк рдмрд╛рд╣рд░реА _package_ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд░рдирдЯрд╛рдЗрдо рдкреИрдХреЗрдЬ рд▓реЛрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЖрдпрд╛рдд рдорд╛рдирдЪрд┐рддреНрд░ рдирд╛рдорд┐рдд) рдЬреЛ рдирд╛рдорд╛рдВрдХрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреА рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореИрдкрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдмрд╛рдд рдЖрдо рддреМрд░ рдкрд░ рдЦрдбрд╝реА рд╣реЛрддреА рд╣реИ, рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╣рд╛рдБ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд░рд┐рд╢реНрддреЗрджрд╛рд░ .js/.d.ts рдЬреЛрдбрд╝реА рд╣реИред рдореИрдВ рдмрд╛рдбрд╝ рдкрд░ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдкрдХреЛ import ... from './foo.d.ts' рдпрд╛ import ... from './foo.js' рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

.d.ts рдлрд╝рд╛рдЗрд▓ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╣реЗрдбрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ рдореИрдк рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рдзрд╛рд░рдгрд╛ рд╣реИ рдХрд┐ рдЖрдо рддреМрд░ рдкрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдХреНрд╕рдЯреЗрдВрд╢рди, рдФрд░ рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ) - рдЖрдЬ рднреА, рд╕рдВрдмрджреНрдз рд░рдирдЯрд╛рдЗрдо "рд╕реНрд░реЛрдд" .js рдпрд╛ .jsx ( jsx: preserve рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк, рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдПрдХ .d.ts рд╕рдВрджрд░реНрдн рдХреЛ .js рдХреЗ рд╕рд╛рде рдПрдорд┐рдЯ рд╕рдордп рдкрд░ рдЖрдпрд╛рдд рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ...

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

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

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

рдмреБрдзрд╡рд╛рд░ 27 рдирд╡рдВрдмрд░, 2019 рдХреЛ 16:48 рдкрд░ рд╡реЗрд╕реНрд▓реА рд╡рд┐рдШрдо рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

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

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/microsoft/TypeScript/issues/16577?email_source=notifications&email_token=AAESFSQS2DQ23RR5KN3RTZ3QV3TLXA5CNFSM4DPRQTY2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW#TNMVW255Z62140
рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAESFSUAP2YO23ZFHCOWVQLQV3TLXANCNFSM4DPRQTYQ
.

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕реА рдЪреАрдЬрд╝ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрджреЗрд╣ рдерд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реА рдПрдЪрдЯреАрдПрдордПрд▓ рдлрд╛рдЗрд▓ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдЖрдпрд╛рдд рдирдХреНрд╢рд╛ рд╣реИ:

<script type="importmap-shim">
      {
        "imports": {
          "@root/":"../../../",
         }
      }
</script>

рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реА ts рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд╣рд╛рдБ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:

import '@root/components/page-main/page-main.js';

рдЕрдм, рдпрд╣ рд╕реЗрдЯрдЕрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдореИрдВ рдЗрд╕реЗ VSCode рдореЗрдВ рдХреИрд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ/рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд╛рдКрдВрдЧрд╛? рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдореИрдВ рдЖрдпрд╛рдд рдкрд░ ctrl + рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╕реНрд╡рдд: рдкреВрд░реНрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдбреАрдлрд╝ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдЖрджрд┐ред

рд╕рд╛рде рд╣реА, рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ tsc .ts рд╕реЗ .js рддрдХ рдЖрдпрд╛рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЯреВрд▓/рдкреИрдХреЗрдЬ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдкрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдзрдиреНрдпрд╡рд╛рджред

(рдореИрдВ ES рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЖрдпрд╛рдд рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП https://github.com/guybedford/es-module-shims рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)

рд▓реЗрдХрд┐рди, рдореИрдВ рдЗрд╕реЗ VSCode рдореЗрдВ рдХреИрд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ/рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд╛рдКрдВрдЧрд╛?

paths рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦреЗрдВред

рд╕рд╛рде рд╣реА, рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ tsc .ts рд╕реЗ .js рддрдХ рдЖрдпрд╛рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЯреВрд▓/рдкреИрдХреЗрдЬ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдкрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдзрдиреНрдпрд╡рд╛рджред

рдмрд╕ .js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рднрд▓реЗ рд╣реА рдЖрдк рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ .ts рдлрд╝рд╛рдЗрд▓ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реЛрдВред

@tvvignesh https://github.com/Zoltu/typescript-transformer-append-js-extension/ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ .js рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░рд╣реАрди рдЖрдпрд╛рдд рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ "рдмрд╕ рдЕрдкрдиреА рдЯреАрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ .js рдбрд╛рд▓реЗрдВ" рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХрд╛ рдХреЛрдб рдЯреАрдПрд╕-рдиреЛрдб рдореЗрдВ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдХреЛрдб ts-node рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ .js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд▓реЗрдХрд┐рди, рдореИрдВ рдЗрд╕реЗ VSCode рдореЗрдВ рдХреИрд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ/рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд╛рдКрдВрдЧрд╛?

paths рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦреЗрдВред

рд╕рд╛рде рд╣реА, рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ tsc .ts рд╕реЗ .js рддрдХ рдЖрдпрд╛рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЯреВрд▓/рдкреИрдХреЗрдЬ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдкрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдзрдиреНрдпрд╡рд╛рджред

рдмрд╕ .js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рднрд▓реЗ рд╣реА рдЖрдк рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ .ts рдлрд╝рд╛рдЗрд▓ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реЛрдВред

рдЖрдкрдХреЗ рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА tsconfig.json рдореЗрдВ рдкрде рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА ctrl+рдХреНрд▓рд┐рдХ рджреНрд╡рд╛рд░рд╛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ред

tsconfig.json рдореЗрдВ рдпрд╣ рдореЗрд░рд╛ рдкрде рд╡рд┐рдХрд▓реНрдк рд╣реИ

"paths": {
            "*": ["www/node_modules/*"],
            "@modules/*": ["www/node_modules/*"],
            "@root/*": ["www/*"]
        }

рдмрд╕ .js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рднрд▓реЗ рд╣реА рдЖрдк рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ .ts рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реЛрдВред

рдпрд╣ рдХрд╛рдлреА рдЕрд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ рдЬрдм рд╣рдЬрд╛рд░реЛрдВ рдЖрдпрд╛рдд рд╣реЛрддреЗ рд╣реИрдВред

"рдмрд╕ .js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ" рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ .mjs рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ _eother_ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ _or_ NodeJS рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрдм рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рдЬреЛ рджреЛрдиреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реЛред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рддрд░реНрдХ рд╣реИ, "рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ NodeJS рдХрд╛ рд╡рд┐рдЪрд▓рди рд╣реИ"ред

рдиреЛрдб 13.2 .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

@justinfagnani ES рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП? рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдиреЛрдбрдЬреЗрдПрд╕ рдХреЗрд╡рд▓ рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ .mjs рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдерд╛, рдЕрдиреНрдпрдерд╛ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдордирдЬреЗрдПрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░рд╛ рд╕реВрддреНрд░ рдереЛрдбрд╝рд╛ рднрдЯрдХрд╛ рд╣реБрдЖ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдпрд╣ рдкреВрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧреАред рдпрджрд┐ рдЖрдк рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦреЗрдВред рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ .ts рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦреЗрдВред рдорд╛рдирдХ рдореЗрдВ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрд╕реЗ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕рдордЭрддрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ .ts рдПрдХреНрд╕рдЯреЗрдВрд╢рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдпрд╣ рд╢реБрджреНрдз рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реЗрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ .ts рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдорд╛рдиреНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрд▓реЗрдЦрди рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Deno.js рдореЗрдВ VS рдХреЛрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ: https://marketplace.visualstudio.com/items?itemName=justjavac.vscode-deno

WebAssembly рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдПрдХ .wasm, .js, .ts, .rs, .c, рдЖрджрд┐ рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдмрддрд╛рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐

рдХрд┐рд╕реА рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ?

https://github.com/microsoft/TypeScript/issues/16577#issuecomment -310426634

рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрджрд┐ рд╣рд╛рдВ?

@QuantumInformation рдореИрдВрдиреЗ рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрд╛ рд╣реИ рд╡рд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред ЁЯШК https://github.com/Zoltu/typescript-transformer-append-js-extension/

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реВрдВ, рдореИрдВ рд╕рдордЭ рдЧрдпрд╛, рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ: рд╡реЗ рд╕рднреА рд▓реЛрдЧ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдкрде рдореЗрдВ .js рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпрд╣ рд╕рдм рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ - рдХреНрдпрд╛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ? рдореИрдВ рдЕрдкрдиреЗ рдЖрдпрд╛рдд рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреИрд╕реЗ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдореЗрдВ рд╣реИ?

@MicahZoltu рдУрд╣ рдЕрдЪреНрдЫрд╛ рдПрдХ

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

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

@Draccoz рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдмрд┐рдВрджреБ рдпрд╣ рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ import { ... } from './foo' рдХреА рддрд░рд╣ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╕реАрдзреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реЛред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХрд╛ рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдЧрд▓рдд рд╣реИ рдЕрдЧрд░ рд╡рд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдЗрд╕ рдЙрдореНрдореАрдж рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЖрдк рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред import * as stuff from 'rxjs/path/to/file.js'; рдЕрдЧрд░ рдпрд╣ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдФрд░ import * as stuff from 'rxjs/path/to/file.ts'; рдЕрдЧрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рддрд░рд┐рдд рдХреА рд╣реИред рдпрд╣ рдЕрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдБ

@lastmjs рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ rxjs/path/to/file.ts рдореЗрдВ import foo from './bar' рд╣реЛ? рдЖрдк рдЗрд╕реЗ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред

рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рд╕реНрдкрд╖реНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рд╛рдВ рдореБрдЭреЗ рдЖрдкрдХреА рдмрд╛рдд рд╕рдордЭ рдореЗрдВ рдЖ рд░рд╣реА рд╣реИред рдореЗрд░рд╛ рдЯреВрд▓ (https://github.com/lastmjs/zwitterion) рдЗрд╕ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЛ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЙрдк-рдЧреИрдк рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИред

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

рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрд╢рд╛ рдЕрднреА рднреА рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рд╣реИ

image

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

рдЕрдЧрд░ рдХреЛрдИ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддрд╛ рд╣реИ рдЬреИрд╕реЗ './foo' рд╕реЗ рдЖрдпрд╛рдд {...} рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рдПрдирдкреАрдПрдо рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ

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

рдХреНрдпрд╛ рдЕрд╕рдореНрдкреАрдбрд┐рдд TS рдХреЛ NPM рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкрд░рдВрдкрд░рд╛ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рдХрд╣реАрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореВрд▓ рдореБрджреНрджреЗ рд╕реЗ рдУрдЯреА рднрдЯрдХ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ "рдерд░реНрдб рдкрд╛рд░реНрдЯреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ" (рдкреИрдХреЗрдЬ) рдПрдХ рд╕рдорд░реНрдерд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗрд╕/рд▓рдХреНрд╖реНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред

@ thw0rted рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореЗрд░рд╛ рдорддрд▓рдм рдерд╛:

...рдЕрдЧрд░ рдХреЛрдИ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддрд╛ рд╣реИ рдЬреИрд╕реЗ import { ... } from './foo' рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рдЖрдЬ TSC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ JS рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕ JS рдХреЛ NPM рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ ...

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

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

рд╣рд╛рдБ, рдпрд╣ рдПрдХ рдХрдард┐рди рд╣реИред

@thw0rted рдореИрдВ рд╡реЗрдмрдкреИрдХ/рдмреЗрдмреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рдЗрд╕рд▓рд┐рдП рдмреЙрдХреНрд╕ рд╕реЗ .js рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдХреБрдЫ рд╕рдорд╛рдзрд╛рди/рд╕рдорд╛рдзрд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдорд╛рдзрд╛рди рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд░рд╣рд╛ рд╣реИред

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

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

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

рдЗрд╕ рдмреАрдЪ, рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдХрд┐рд╕реА рднреА VSCode рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ? рдПрд╕реНрд▓рд┐рдВрдЯ рдореЗрдВ рдЗрдореНрдкреЛрд░реНрдЯ/рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдореИрдВ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рдкрд╛рдпрд╛ рд╣реВрдВред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ import рд▓рд╛рдЗрдиреЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП sed рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
https://github.com/yoursunny/NDNts/blob/9f50fcec245b33c7649fa815bbb3dd404eee160e/mk/build.sh#L12 -L14
рдореБрдЭреЗ рдЙрддреНрдкрд╛рджрди рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди SourceMaps рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╡реЗ рдЕрдм рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рдПрдВрдЧреЗред

рдореИрдВ .ts рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ ts-jest рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИред
рдЬрдмрдХрд┐ рд╕рдВрдХрд▓рд┐рдд .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдЬреЗрд╕реНрдЯ рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ Coveralls рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИред

@yoursunny рд╣рд╛рдВ, sed рд╡реИрд░рд┐рдПрдВрдЯ рд╣реИ (рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рднреА рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЙрдиреНрдлрд┐рдЧ рдХреА рд╡рдЬрд╣ рд╕реЗ рд░рд┐рдкреНрд▓реЗрд╕-рдЗрди-рдлрд╛рдЗрд▓ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЗрдВрдкреЛрд░реНрдЯрдореИрдк рдлрд╛рдЗрд▓ рдореИрдкрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рдЬреЗрдирд░реЗрдЯреЗрдб рдЬреЗрдПрд╕-рдлрд╛рдЗрд▓реНрд╕ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЧрдВрдз рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ =) рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдирд╛ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде ttypescript рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдлреАрдЪрд░/рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП @MicahZoltu рджреНрд╡рд╛рд░рд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо-рдкрде )ред

@richardkazuomiller рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдЪ рдирд╣реАрдВ рд╣реИ:

рдпрджрд┐ Microsoft рдХреЗ рдЕрдЪреНрдЫреЗ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рди рд╣реЛ

рдХреЗрд╡рд▓ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ:

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

рддреЛ рдЗрд╕ рд╕рдм рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╣реА .ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдпрд╛рдд рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЪреАрдЬреЗрдВ рд╕рд┐рд░реНрдл рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдиреЛрдб> = 13.2 рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреАред

@yoursunny рдХреНрдпрд╛ рдЖрдкрдиреЗ ts-jest рдХреЗ рдЦрд┐рд▓рд╛рдл рдмрдЧ рдлрд╛рдЗрд▓ рдХреА? рд╡реЗ рдпрд╣рд╛рдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╛рдирдХ рд╕реЗ рд╣рдЯ рд░рд╣реЗ рд╣реИрдВред рдЕрдЧрд░ рдпрд╣ .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдпрд╣ Coveralls рдореЗрдВ рдПрдХ рдмрдЧ рдХреА рддрд░рд╣ рднреА рд▓рдЧрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдиреЗ ts-jest рдХреЗ рдЦрд┐рд▓рд╛рдл рдмрдЧ рдлрд╛рдЗрд▓ рдХрд┐рдпрд╛ рд╣реИ? рд╡реЗ рдпрд╣рд╛рдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╛рдирдХ рд╕реЗ рд╣рдЯ рд░рд╣реЗ рд╣реИрдВред

рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рдХрд┐ ts-jest рд╕рдВрдХрд▓реНрдк рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЕрдЧрд░ рдпрд╣ .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдпрд╣ Coveralls рдореЗрдВ рдПрдХ рдмрдЧ рдХреА рддрд░рд╣ рднреА рд▓рдЧрддрд╛ рд╣реИред

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

рдирдпрд╛ рдпреБрдЧ рдпрд╣рд╛рдБ рд╣реИ!

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

рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ (рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡реЗрдмрд╕рд╛рдЗрдЯ) рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди "appendJsExtension": true рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдПрдХ рдирдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

@mjbvz рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рдХрд┐рдП рдЧрдП рд╡реАрдПрд╕ рдХреЛрдб рдХреЗ рд░реЗрдкреЛ рдореЗрдВ рдореБрджреНрджрд╛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ: рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ; рдЬрдм рд╡реАрдПрд╕ рдХреЛрдб рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ рддреЛ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рд░рдирдЯрд╛рдЗрдо рд╡рд┐рдлрд▓рддрд╛ рддрдХ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЧрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ "appendJsExtension": true рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝реЗрдЧрд╛, рдФрд░ рд╣рдо рд╕реНрд░реЛрдд рдореЗрдВ .js рдХреЗ рдмрд┐рдирд╛ TS рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реАрдПрд╕ рдХреЛрдб рдкреНрд▓рдЧрдЗрди рдореЗрдВ рд╕реНрд╡рддрдГ рдкреВрд░реНрдг рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдСрдЯреЛ-рдЬреЛрдбрд╝ рдХреЛ рд╕рдХреНрд╖рдо/рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

@mjbvz рд╡реАрдПрд╕ рдХреЛрдб/рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ рдореБрджреНрджрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдбреБрдкреНрд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдВрддрддрдГ WONTFIX рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ VS рдХреЛрдб рдореБрджреНрджреЗ рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рдмрдврд╝рд╛ рджреЗрдЧрд╛ред

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

import something from './javascript-code.png';
import something2 from './javascript-code2.js';
import something3 from './javascript-code3.ts';

рдпрд╣ рд╕рдм рддрдм рддрдХ рдорд╛рдиреНрдп рд╣реИ рдЬрдм рддрдХ рдлрд╛рдЗрд▓реЗрдВ (рдЙрдирдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛) рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ MIME рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрд░реЛрд╕рд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рддреЛ рд╕рдорд╛рдзрд╛рди рдЬрд╣рд╛рдВ рдЬреЗрдПрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдпрд╛ рддреЛ рдирд┐рд╣рд┐рдд рд╣реИ рдпрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЕрдиреБрдорддрд┐ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХрд╛рдЯ рд╕рдХрддрд╛ рд╣реИ? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ TS рдФрд░ DTS рдПрдХреНрд╕рдЯреЗрдВрд╢рди IMO рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд░рдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рди рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░, рдЬреИрд╕реЗ рдХрд┐ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛESM рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ, рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред , рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА MIME рдкреНрд░рдХрд╛рд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕ рдореЛрд░реНрдЪреЗ рдкрд░ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЖрдпрд╛рдд рдореЗрдВ рдордирдорд╛рдиреЗ (рд▓рд╛рдкрддрд╛ рд╕рд╣рд┐рдд) рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдореЗрдВ рдЯреАрдПрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ file.ts рдФрд░ file (рдХреЛрдИ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ) рддреЛ рдХреНрдпрд╛ рд╕рдВрдШрд░реНрд╖ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛?

рд╡реЗрдм рдФрд░ рд╕рд░реНрд╡рд┐рд╕ рд╡рд░реНрдХрд░реНрд╕ рдХреЛ ES рдореЙрдбреНрдпреВрд▓ рдЗрдореНрдкреЛрд░реНрдЯ/рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рднреА рд╕рдкреЛрд░реНрдЯ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ ред

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

рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреЗрдВред <3

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреЗ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдмрдкреИрдХ рдпрд╛ --outFile рдХреЗ рдмрд┐рдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ?

рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ: рдЬрд┐рд╕ рдХрд╛рдлреА рдмрдбрд╝реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдореИрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЙрд╕реЗ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде ts-loader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмрдВрдбрд▓ рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 35 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВред
рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рдерд╛ рд╡рд╣ transpileOnly рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬрд┐рд╕рдиреЗ рд╕рдВрдХрд▓рди рд╕рдордп рдХреЛ 20 рд╕реЗрдХрдВрдб рддрдХ рдШрдЯрд╛ рджрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдзреАрдорд╛ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рдЦреЛ рджреА рд╣реИред
рд╡реЗрдмрдкреИрдХ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЖрдЙрдЯрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рдЧрднрдЧ 14 рд╕реЗрдХрдВрдб рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдзреАрдорд╛ рд╣реИред incremental рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛ред

рд╕рдВрдХрд▓рди рд╕рдордп рдХреЗ рдХреБрдЫ рд╕реЗрдХрдВрдб рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ 1 рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рддрд┐ 1 рдЯреАрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдирд╛ рдФрд░ incremental рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ts рдХреЗрд╡рд▓ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрджрд▓ рдЧрдИ рд╣реИрдВред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдореЙрдбреНрдпреВрд▓ рд▓рдХреНрд╖реНрдп рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрд╛: рд╕рд┐рд╕реНрдЯрдо, рдПрдПрдордбреА, рдИрдПрд╕ 6ред
рдореИрдВ paths рдореИрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ tsconfig.json рдореЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдореБрдЭреЗ рдЬреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВ рд╡реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдЙрди рдЙрдкрдирд╛рдореЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

рдХреНрдпрд╛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

@andrewvarga рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рд╕рдВрдХрд▓рд┐рдд рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реАрдзреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдВрдбрд▓ рдпрд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ:

  1. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рднреА рдЖрдпрд╛рддреЛрдВ рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИред
  2. рдПрдХ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдПрдБ рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП npm рдкреИрдХреЗрдЬ рдирд╛рдореЛрдВ рдХреЗ рдЖрдпрд╛рдд рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛред es-dev-server рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реИред
  3. tsc --watch рдЪрд▓рд╛рдПрдБ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЗ tsconfig рдореЗрдВ esnext рд╣реИ)

рдмрд╕, рдЗрддрдирд╛ рд╣реАред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдЯреВрд▓рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

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

@Draccoz tsc рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВред

@andrewvarga рдмрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ Zwitterion рд╣реИред рдЗрд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрддреНрд╡реЛрдВ рдореЗрдВ рднреА рд╕реНрдкрд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП .js рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП .ts) рдХреЗ рд╕рд╛рде рдЖрдпрд╛рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рд╣реА рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА рд╣реИ, рдЬрдм рдлрд╛рдЗрд▓реЗрдВ рдмрджрд▓рддреА рд╣реИрдВ рддреЛ рдХреИрд╢рд┐рдВрдЧ рдФрд░ рдСрдЯреЛ-рд░реАрд▓реЛрдбрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХреЛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рдЯрд╛рдЗрдк рдПрд░рд░) рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдВрдкрд╛рджрдХ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдирд╛ рд╣реЛрдЧрд╛

@andrewvarga рдореИрдВ https://github.com/Zoltu/typescript-transformer-append-js-extension/ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рджреЗрд╢реА ES рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рд╕рднреА рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд▓реЛрдб рд╣реЛрддреЗ рд╣реИрдВ (рд╕рдлрд╛рд░реА рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдирдпрд╛ IE)ред

рдпрджрд┐ рдЖрдкрдХрд╛ рд░рдирдЯрд╛рдЗрдо NPM рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрдВрдбрд▓рд┐рдВрдЧ рдХреЗ es-modules-shim рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рджрд┐рдЦрд╛рддрд╛ рд╣реИ: https://github.com/Zoltu/react-es2015-template

@MicahZoltu Safari рдореЗрдВ ES рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рд╣реИ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреИрдирд┐рдпрд╕ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░: https://caniuse.com/#search =modules

@justinfagnani awww рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, "рд╕рдВрдХрд▓рд┐рдд рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ" рднрд╛рдЧ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛, рд╕реЛрдЪрд╛ рдХрд┐ рдЖрдк jsdoc рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╡рд┐рднрд┐рдиреНрди рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВрдиреЗ рдЬреЛ рдкрд╛рдпрд╛ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗрдмрдкреИрдХ рдХреЗ рд▓рд┐рдП hard-source-webpack-plugin npm рдореЙрдбреНрдпреВрд▓ рдФрд░ ts-loader рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ transpileOnly: true рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рд▓реНрдб рд╕рдордп рдХреЛ рд▓рдЧрднрдЧ 4-5 рд╕реЗрдХрдВрдб рддрдХ рдХрдо рдХрд░ рджрд┐рдпрд╛ред
рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдХреЗ рддреНрд╡рд░рд┐рдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреАрдИ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред

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

рдореИрдВрдиреЗ рдЗрд╕реЗ systemjs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдпрд╛рдд рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдпрд╛ред

@andrewvarga рдЖрдк рдЗрдВрдкреЛрд░реНрдЯрдореИрдк рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рд╣рд▓реНрдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ SystemJs рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдореЗрд░реЗ рднрд╛рд░реА рдЙрджрд╛рд╣рд░рдг - systemjs рдФрд░ esm рд╡рд┐рдХрд▓реНрдк рдХреЛ рднреА рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди esm importmaps рджреЗрд╢реА рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (gulp-replace), рдпрд╛ рдЖрдк es-module-shims рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ tsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдПрдХрдорд╛рддреНрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, esnext рдпрд╛ es2015 рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореИрдВ рд╕реАрдзреЗ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

https://github.com/alshdavid-sandbox/typescript-only-compiler

рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдЕрдЧрд░ рдЖрдк рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ from "./module.js" рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреБрд╢реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рд╕рдВрдХрд▓рд┐рдд index.js рдореЗрдВ рдПрдХ рд╡реИрдз ES6 рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рддрдм рддрдХ рд╣реИ рдЬрдм рддрдХ рдЖрдк рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдпрд╛ рддреЛ рдИрдПрд╕ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдпрд╛ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдкреАред

рдореИрдВрдиреЗ рдЧрд▓реНрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдпрд╛ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдкрде рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .js рдЬреЛрдбрд╝рддрд╛ рд╣реИред (рдПрдХ рдмреЛрдирд╕ рдЯреАрдПрд╕ рдкрде рд╕рдВрдХрд▓реНрдк рднреА)ред

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

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рдзреАрдорд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рдЪреАрдЬ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред

https://github.com/alshdavid-sandbox/typescript-only-compiler/tree/gulp

рдпрд╣ рдФрд░ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдиреЛрдб рдЯреАрдо рдиреЗ рд╡рд┐рд╕реНрддрд╛рд░рд╣реАрди рдЖрдпрд╛рдд рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИ
https://github.com/nodejs/modules/issues/444

рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд░рд╣рд┐рдд рдЖрдпрд╛рдд рдХреЗ рд╡рд┐рд░реБрджреНрдз рддрдп рдХрд┐рдП рдЧрдП рдЖрдпрд╛рдд рдорд╛рдирдЪрд┐рддреНрд░ рдЬреЛрдбрд╝реЗрдВ
https://github.com/WICG/import-maps/issues/194

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

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

рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ: рдпрджрд┐ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рд╣реИ, рддреЛ .ts рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦреЗрдВред рдпрджрд┐ рдпрд╣ рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рд╣реИ, рддреЛ рдПрдХ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦреЗрдВред рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдЪрд▓рд╛рдПрдЧрд╛ (.ts рдХреЛ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди/рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ MIME рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)ред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред tsc рдФрд░ ES рдореЙрдбреНрдпреВрд▓ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо ES рдореЙрдбреНрдпреВрд▓, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ Node.js рдЙрд╕реА рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ)

@justinfagnani tsc рдЗрд╕рд╕реЗ рдХрд╛рдлреА рдЦреБрд╢ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ "рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ" рдХрд╣рдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╕рд╣реА рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рдХреЛрдИ рдЖрдо рд╕рд╣рдорддрд┐ рдирд╣реАрдВ рд╣реИ,

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

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

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

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

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

рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ, tsc рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ рддрд░рдл рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реНрдг рдЯрд╛рдЗрдкрд┐рдВрдЧ (рднрдпрд╛рдирдХ) рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ es рдореЙрдбреНрдпреВрд▓ рд╡рд┐рддрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рд╕реНрд░реЛрдд рдХреЗ рдЦрд┐рд▓рд╛рдл рдЯреЗрд╕реНрдЯ рдХреЛрдб рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЯреАрдПрд╕-рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЯреАрдПрд╕-рдиреЛрдб рдЦреБрд╢ рдирд╣реАрдВ рд╣реИред

рдЗрд╕реА рддрд░рд╣, рдпрд╣ рддрдереНрдп рдХрд┐ tsc, vscode рдФрд░ webpack рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдП рд╣реИрдВ:

  1. рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ vscode рдСрдЯреЛ рдЖрдпрд╛рдд
  2. tsc ts рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрд░реНрде рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдпрд╛рдд рдХреЛ рдЦреБрд╢реА рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рджреЗрдЧрд╛
  3. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдпрд╣рд╛рдВ рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рджреВ рдХрд░рддрд╛ рд╣реИ

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

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

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

рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ tsc рдореЗрд░реА рдПрдХрдорд╛рддреНрд░ рджреЗрд╡ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЪреАрдЬреЗрдВ рдмрд╕ рдирд╣реАрдВ рд╣реЛрдВрдЧреА рдФрд░ рдПрдХ рд╕рдкрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╣реЗрдВрдЧреАред

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

рд╡реЗрдмрдкреИрдХ рдФрд░ рд░реЛрд▓рдЕрдк рджреЛрдиреЛрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдВрдбрд▓ рд╣реИрдВ, рдФрд░ рдореИрдВ es рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@alshdavid рд░реЛрд▓рдЕрдк рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк рдХреЛ esm рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ preserveModules рд╕реЗ true рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ: https://rollupjs.org/guide/en/#preservemodules

рд╢рд╛рдпрдж "рд╡рд┐рд╕реНрддрд╛рд░ рд░рд╣рд┐рдд" рдЖрдпрд╛рдд рдПрдХ рдореВрд▓ рдкрд╛рдк рдерд╛, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рдерд╛

рдЕрдм рд╣рдорд╛рд░реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдФрд░ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ: рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдЖрдк рдЖрдЬ рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрддреБрд╖реНрдЯ рд╣реИ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдЬреНрдЮреЗрдпрд╡рд╛рджреА рд╣реИ, рдФрд░ рдмрдВрдбрд▓рд░ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ

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

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

рдореВрд▓ рдЙрджрд╛рд╣рд░рдг

src/index.ts
src/foo.ts
test/index.ts

рд╕реНрд░реЛрдд/foo.ts

export default (a: number) => a + 100;

src/index.ts

// okay, editor (without ESLint) doesn't report error here
import foo from './foo.js';

export default () => {
  console.log(foo(123));
}

рдкрд░реАрдХреНрд╖рдг/index.ts

// errm... ts or js ext?! .ts should be the one that make sense
// and that's how the testing too will expect it to be, otherwise will throw
// but then it will detect some weird `.js` ext in the source files...
// which again won't be able to resolve... complete bullshit. 
import main from '../src/index.ts';
import foo from '../src/foo.ts';

test('some boolshit', () => {
  main();
});

test('about foo', () => {
  foo(20);
});

"рдмрдХрд╡рд╛рд╕" рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдЪ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореВрд▓ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЗрддрдирд╛ рдХрдард┐рди рд╣реИ рдХрд┐ рдЬрдм рд╕рдВрдХрд▓рдХ рдЖрдпрд╛рдд рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди ( .ts ) рджреЗрдЦрддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ .js рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИ (рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реИ рд╣реЛрдирд╛)ред рдЬрдм рдХреЛрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рди рд╣реЛ, рддреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рди рд░рдЦреЗрдВ (рдЕрд░реНрдз-рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░?)

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЛрд░реНрд╕ рдХреЛрдб рдореЗрдВ рдЗрдореНрдкреЛрд░реНрдЯ рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдХрд╡рд╛рд╕ рд╣реИред рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡рдд: VSCode рдореЗрдВ ESLint рдирд┐рдпрдореЛрдВ (рдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдпрд╛ рдЖрдк рдЬрд┐рд╕ рднреА рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ "рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛" рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред ESLint, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ, VS рдХреЛрдб, рдФрд░ рд╣рд░ рджреВрд╕рд░реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ-рд╕рдВрдмрдВрдзрд┐рдд рдЯреВрд▓ рдХрд╛ рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде _just work_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╣реИрдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдЪрд┐рдд рддрд░реНрдХ рд╣реИ: рдХрд┐ рдЬрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдк рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _is_ .js рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдмрджрд▓рдиреЗ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЖрдпрд╛рддрд┐рдд рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рдиреАрдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рдпрд╛ рдХрд┐рд╕реА рддреГрддреАрдп-рдкрдХреНрд╖ рдкреИрдХреЗрдЬ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рддред

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

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

рдЙрдкрд░реЛрдХреНрдд src/index.ts рдореЗрдВ ./foo.js рд╣реЛрдиреЗ/рджреЗрдЦрдиреЗ рдФрд░ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ - рдмреЗрд╢рдХ рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЗрдПрд╕/рдЬреЗрд╕рди рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реИред рд▓реЗрдХрд┐рди ./foo.js рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдиреНрдп рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ ( ./foo.ts ) рдХрд╛ рдорддрд▓рдм рд╣реИ ... рдХреНрд░реВрд░ рд╣реИред рдпрд╣ рднреНрд░рд╛рдордХ рдФрд░ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИред

рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЬреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЙрдкрд░реЛрдХреНрдд test/index.ts рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ ./foo.js рдХреЛ рдвреВрдВрдв/рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ ./foo.ts рд╣реИред

рдЕрдЧрд░ рд╣рдо рд╕рдм рдХреБрдЫ рдПрдХ рддрд░рдл рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рдХреНрдпреЛрдВ рд╣реИ рд▓реЗрдХрд┐рди .ts рдПрдХ (рд╕рдВрдкрд╛рджрдХ рдореЗрдВ ts рд░рд┐рдкреЛрд░реНрдЯ рддреНрд░реБрдЯрд┐) рдХреА рдирд╣реАрдВ? рдпрд╣ рдмреБрдирд┐рдпрд╛рджреА, рд╕рд░рд▓ рдФрд░ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдЕрд╕рдВрдЧрддрд┐ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрдИ рдЕрдиреНрдп "рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП" рд╕рдорд╕реНрдпрд╛рдПрдВред

рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрд░реНрдХ рдЦреЛ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдирд╛рдо рдЗрд╕ рддрд░рд╣ рдХреНрдпреЛрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдЬрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рд╕рдВрднрд╡ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рдкрд░реАрдд рд╣реИ - рдХрд┐ рдпрд╣ .ts (3.7+ рддрдХ) рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ

рдХреНрдпреЛрдВ .ts рдЖрдпрд╛рдд рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИ ?!

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

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

рдЗрд╕ рдмрд╛рдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ TS JS рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡-рдирд┐рд╣рд┐рдд рдЬрд╛рдЧреАрд░ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред

рдХрд┐рд╕реА .ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп .js рд▓рд┐рдЦрдирд╛ рд▓рдХреНрд╖реНрдп рд╕рдВрдХрд▓рди рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЬреНрдЮрд╛рди рдЧреНрд░рд╣рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рди рд▓рдХреНрд╖реНрдп рд╣рдореЗрд╢рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрддрд╛ рд╣реИред

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

.js рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдРрд╕реЗ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВред

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

рдпрд╣ рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдкреНрд░рд╡рд╛рд╣ рдХреА рддрд░рд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЪреАрдиреА рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ред

@phaux рдореИрдВ рдХрднреА рднреА рдРрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреЛ рдПрдХ рд╣реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рддрд╣рдд рд╕реЛрд░реНрд╕ рдФрд░ рдбрд┐рд╕реНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдорд┐рд▓рд╛рддрд╛ рд╣реЛ, рднрд▓реЗ рд╣реА рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рд░рд╣рддреЗ рд╣реЛрдВред рдпрд╣ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдирд╛рдордХрд░рдг рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд╣реИ index.js рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ ...

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

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

рдХреНрдпрд╛ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ, рдкреБрд╖реНрдЯрд┐ (рдпрд╛ рд╕рд╣реА) рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ VSCode рдХреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рд╕рд░реНрд╡рд░ рд╕реЗ рдСрдЯреЛ-рдЖрдпрд╛рдд рд╕реБрдЭрд╛рд╡ рдорд┐рд▓рддреЗ рд╣реИрдВ?

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

рддреЛ рд╢рд╛рдпрдж рд╣рдо рд╡рд░реНрддрдорд╛рди рдкреНрд░рддрд┐рдорд╛рди рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдорд╛рдирддреЗ рд╣реИрдВ:
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдпрд╛рдд рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХреНрдпрд╛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╛рдиреА, рдЖрдкрдХреЗ рдЖрдпрд╛рдд рдЖрдкрдХреА "dist" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рди рдХрд┐ "src" - рдЬреИрд╕реЗ fetch рдХреЙрд▓ рдФрд░ рдмрд╛рдХреА - рдЕрдЧрд░ рд╣рдо рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕рд╣рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдмрд╛рдХреА рдмрди рдЬрд╛рддрд╛ рд╣реИ рд╕рд░рд▓ рдФрд░ рд╕реБрд╕рдВрдЧрдд

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ - рдХреНрдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП ".ts" рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ ".js" рдореЗрдВ рдмрджрд▓рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИ?

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

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

рдкреАрдЫрд╛ рдХрд░рдирд╛

@rconnamacher , @TomasHubelbauer

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

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

рдореИрдВ рдореБрдЯреНрдареА рднрд░ рдЦреБрд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рд░реЗрдирд░рд╛рдХреВ , рдирд┐рдВрджрдХ , рд░реЗрдбрдХреНрд░рд┐рдкреНрдЯреЛ , рд╕рддреНрддрд╛рд╡рд╛рджреА

рдореБрдЭреЗ рдПрдХ рдИрдореЗрд▓ рд╢реВрдЯ рдХрд░реЗрдВ рдФрд░ рдореБрдЭреЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА

:рд▓рд╣рд░: рдкреАрдЫрд╛

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

/folder
  a.ts
  a.js
  index.ts

рдпрджрд┐ index.ts рдореЗрдВ, moduleResolution: 'node' . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп

// points to a.ts
import * as a from './a` 

// points to a.ts
import * as a from './a.js` 

// compiler emits error
import * as a from './a.ts` 

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

рдареАрдХ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ a.js рдХреБрдЫ рднреА рд╣реИ, рд▓реЗрдХрд┐рди a.ts рдХреЗ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓реНрдб рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднрдпрд╛рд╡рд╣ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИред

@ thw0rted рдпрджрд┐ рдЖрдк рдПрдХ рдПрдХрд▓ JS рдмрдВрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдирдкреБрдЯ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдмрдВрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП JS рд╕рдордХрдХреНрд╖ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, JS рдлрд╝рд╛рдЗрд▓ рдФрд░ рдЙрд╕реА рдирд╛рдо рдХреА TS рдлрд╝рд╛рдЗрд▓ рд╣реЛрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдиреВрдиреА рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИред

рдпрд╣ "рдЕрд╡реИрдз" рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХрд╣рд╛рдБ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

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

рдЙрджрд╣рд╛рд░рдг рдХреЗ рд▓рд┐рдП:
https://github.com/alshdavid/tsc-website

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рджрд░реНрдж рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреАред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ paths рдХреЛ рдЙрдирдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

рдЗрд╕рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХреЗрдВред

рдЗрд╕рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХреЗрдВред

рд╡реЗ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕рд┐рд░реНрдл tsc (рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рдХ рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдЖрдордВрддреНрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХрд┐рд╕реА рдиреЗ рдХреЛрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд░реИрдкрд░ рдмрдирд╛рдпрд╛ рдЬреЛ _exactly_ рдЬреИрд╕реЗ tsc рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ tsc рд░реИрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕реНрд╡рддрдГ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/Zoltu/typescript-transformer-append-js-extension/ рдЬреИрд╕реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@alshdavid рдЧрд┐рдЯрд╣рдм рдореЗрдВ рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрд┐рдирд╛ рдмрдВрдбрд▓рд░ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЖрдпрд╛рдд рдкрд░ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рджрд╛рдпрд░ рдХрд┐рдпрд╛ред

@alshdavid рдЖрдк рдореЗрд░реА рдирдореВрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдзреБрдирд┐рдХ рдХреЗ рд▓рд┐рдП esm рдФрд░ SystemJS рдХреЗ рд╕рд╛рде IE11)ред
рд▓реЗрдХрд┐рди рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ esm рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реВрдБ =(

рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕рднреА import s рдореЗрдВ .js рдбрд╛рд▓рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдХреБрдЫ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЦрд░рд╛рдм рдмрд╛рддрдЪреАрдд рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ts-рдиреЛрдб рдЪреЛрдХ: https://github.com/TypeStrong/ts-node/issues/783ред рдпрд╣ рдХрд┐рд╕рдХреА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рдкрд░ рд╕реНрдкрд╖реНрдЯ рд╕рд╣рдорддрд┐ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ - рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ) рдХреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рд╣рд░ рдЙрдкрдХрд░рдг рдЬреЛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЬрдм рддрдХ рд╣рд░ рдХреЛрдИ рдкреИрд╕рд╛ рдЦрд░реНрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдСрдк рдЕрд╕рдВрдЧрддрддрд╛рдУрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм-рджрд╕реНрддрд╛рд╡реЗрдЬ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдпрд╛ рдЕрдЬреАрдм рд╕реЗрд╡рд╛ рд╢реНрд░рдорд┐рдХреЛрдВ рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реИрдВред

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

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

рдФрд░ рдЕрдЧрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдирд╣реАрдВ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ 3 рд╕рд╛рд▓ рдореЗрдВ рдареАрдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ ...

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

рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рдерд╛

рдореИрдВ рдмрд╕ ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдбрд╛рд▓рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЬрдм рдореИрдВрдиреЗ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ рдХреА рдЬрд╛рдВрдЪ рдХреА рддреЛ рдпрд╣ рддрдм рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ tsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд┐рдпрд╛ред рдЗрд╕рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЧрдИред

рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИред
рдЯреАрдПрд╕рд╕реА-рдкреА

{
"рд╕рдВрдХрд▓рдХ рд╡рд┐рдХрд▓реНрдк": {
// "рдореЙрдбреНрдпреВрд▓": "рдПрдПрдордбреА",
"рдореЙрдбреНрдпреВрд▓": "es6",
"рд▓рдХреНрд╖реНрдп": "es6",
"рдХреЛрдИ рд▓рд╛рдЧреВ рдирд╣реАрдВ": рдЭреВрдард╛,
"рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣рдЯрд╛рдПрдВ": рд╕рдЪ рд╣реИ,
"preserveConstEnums": рдЭреВрдард╛,
// "рдЖрдЙрдЯрдлрд╛рдЗрд▓": "рдЬреЗрдПрд╕",
"рдЖрдЙрдЯрдбрд┐рд░": "рдЬреЗрдПрд╕",
"рд╕реЛрд░реНрд╕рдореИрдк": рдЭреВрдард╛
},
"рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛": [
"testscript.ts"
]
}

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

рдореЗрд░рд╛ рд╕рдВрджреЗрд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП svgwrapper.js рдирд╣реАрдВ рд╣реИ
рдХреНрдпреЛрдВ/рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛? (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)

рдореИрдВ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕рдВрд▓рдЧреНрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

ts-js-ext-issue

@yogeshjog рдпрд╣ рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕реЗ tsc рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдЖрдк рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред рдЪрд╛рд╣реЗ рдЖрдпрд╛рддрд┐рдд рдореЙрдбреНрдпреВрд▓ рдореВрд▓ рд░реВрдк рд╕реЗ .ts рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реЛ рдпрд╛ .d.ts / .js рдЬреЛрдбрд╝реА рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓ рд╕реЗ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

@yogeshjog рдпрд╣ рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕реЗ tsc рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдЖрдк рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред рдЪрд╛рд╣реЗ рдЖрдпрд╛рддрд┐рдд рдореЙрдбреНрдпреВрд▓ рдореВрд▓ рд░реВрдк рд╕реЗ .ts рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реЛ рдпрд╛ .d.ts / .js рдЬреЛрдбрд╝реА рдЖрдпрд╛рдд рдореЙрдбреНрдпреВрд▓ рд╕реЗ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдзрдиреНрдпрд╡рд╛рдж! @justinfagnani рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП

рдЖрдк рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред

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

рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ

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

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

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

рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЛрдб рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ './foo' рдЬрд╛рдирдХрд╛рд░реА './foo.js' рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрде рдЦреЛрдЬ рдХрд░реЗрдЧрд╛, './foo' рдорд╛рдиреНрдп рд╣реИред рд▓реЗрдХрд┐рди рдиреЛрдб рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди './foo.ts' рдХреЛ './foo.js' рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП './foo.ts' рдЕрдорд╛рдиреНрдп рд╣реИред

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

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

@leontepe рдЖрдкрдХреЛ рдмрдВрдбрд▓рд░/рд▓реЛрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдпрд╛ рддреЛ https://github.com/Zoltu/typescript-transformer-append-js-extension/ (рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рд╕рдорд╛рдзрд╛рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЖрдк рдЕрдкрдиреЗ рд╕рднреА рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ .js рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ: рдпрд╣ рд╣реЛрдЧрд╛ рдЕрдкрдирд╛ рдХреЛрдб ts-node рдореЗрдВ рд╡рд┐рдлрд▓ рдХрд░реЗрдВ)ред

@leontepe рдЖрдкрдХреЛ рдмрдВрдбрд▓рд░/рд▓реЛрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдпрд╛ рддреЛ https://github.com/Zoltu/typescript-transformer-append-js-extension/ (рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рд╕рдорд╛рдзрд╛рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЖрдк рдЕрдкрдиреЗ рд╕рднреА рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ .js рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ: рдпрд╣ рд╣реЛрдЧрд╛ рдЕрдкрдирд╛ рдХреЛрдб ts-node рдореЗрдВ рд╡рд┐рдлрд▓ рдХрд░реЗрдВ)ред

@MicahZoltu рдареАрдХ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдереЛрдбрд╝реА рдирд┐рд░рд╛рд╢рд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдпрд╣ 'рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░' рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ @phaux рдиреЗ рдХрд╣рд╛, VSCode рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдмрдирд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдпрд╣рд╛рдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреАрдо рдХреА рдХреНрд╖рдорддрд╛ рдкрд░ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╕рд╡рд╛рд▓ рдЙрдард╛рддрд╛ рд╣реВрдВ рдпрд╛ рдореИрдВрдиреЗ рдЗрд╕ рдкреВрд░реЗ рд╕рдордп рдХреБрдЫ рдЧрд▓рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рд╕рд┐рд░реНрдл рд╕рд╛рджрд╛ рдмреЗрд╡рдХреВрдл рд╣реВрдВред рдХрд┐рдВрддреБ рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ...

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ + рдмреЗрдмреЗрд▓ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдкрд░ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЗрд╕реЗ рдиреЛрдб-рд╢реИрд▓реА рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд░рдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдпрд╛рдд рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИ рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд░рдо рдореЗрдВ рдХрдИ рдЪреАрдЬреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рднреА рд╕реНрд░реЛрдд рд╕реНрдерд╛рдиреАрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ ...

рд╢рд╛рдпрдж рдпрд╣ TS рдореЗрдВ рдирдпрд╛ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ? Node.js рдХреЗ рдкрд╛рд╕ рдЕрдм рдореВрд▓ ESM рд╕рдорд░реНрдерди рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рдпрд╣ --experimental-specifier-resolution=node рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдереЛрдбрд╝реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред рдбреЗрдиреЛ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд░ рднреА рд╣реИрдВред рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
tsconfig.json:

{
    "compilerOptions": {
        "moduleResolution": "explicit",
        "strict": true
    }
}

рдлрд┐рд░ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐:

import foo from './foo.ts'; // no ts(2691) here

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ:

import foo from './foo.js';

"рд╕рдЦреНрдд": рд╕рдЪ рдХрд╛ рдорддрд▓рдм рдмрд╣реБрдд рдХрд╛рдо рд╣реИ!
2020, рдЕрднреА рднреА рдареАрдХ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИред

рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рдиреЗ рдореЗрдВ рдЭрд┐рдЭрдХрдирд╛ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рдорд╛рд░реА рдЯреАрдо рдХреЛ рднреА рдЕрд╡рд░реБрджреНрдз рдХрд░ рд░рд╣реА рд╣реИ

рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдПрдХрд▓ рд╕реНрд░реЛрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдореВрд▓ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдиреЛрдб рдореЗрдВ рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЗ рд╕рд╛рде рднреА рдЙрдкрднреЛрдЬреНрдп рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ TS рдХреЛрдб рдореЗрдВ рдЕрдкрдиреЗ рдЖрдпрд╛рдд рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ .js рдбрд╛рд▓рддреЗ рд╣реИрдВ рддреЛ Webpack рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЖрдпрд╛рдд рдореЗрдВ .ts рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рди рд╣реЛрдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореВрд▓ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХреЛрдИ рднреА рд╕рдВрдпреЛрдЬрди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдмрдВрдбрд▓рд░ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рд╣рдо рдЕрдкрдиреЗ рдЖрдпрд╛рдд рдореЗрдВ .ts рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ .js рдмрди рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧреА (рдФрд░ рдЖрдкрдХреЛ deno compat рднреА рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛)ред @ evg656e рдЬреИрд╕рд╛ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@EisenbergEffect рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рдмрдЧ рджрд╛рдпрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЯреАрдПрд╕рд╕реА рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

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

@EisenbergEffect рдпрджрд┐ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдбрд░ рдЖрдкрдХреЛ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреИрд╕реЗ tsc рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИред рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдХрд╣рд╛, рд╡реНрдпрд╡рд╣рд╛рд░ рд╡реЗрдмрдкреИрдХ рдФрд░ tsc рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рд╕реНрд░реЛрдд рдирд┐рд░реНрдорд╛рдг рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред

рд╢рд╛рдпрдж рдпрд╣ TS рдореЗрдВ рдирдпрд╛ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ? Node.js рдХреЗ рдкрд╛рд╕ рдЕрдм рдореВрд▓ ESM рд╕рдорд░реНрдерди рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рдпрд╣ --experimental-specifier-resolution=node рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдереЛрдбрд╝реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред рдбреЗрдиреЛ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд░ рднреА рд╣реИрдВред рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
tsconfig.json:

{
    "compilerOptions": {
        "moduleResolution": "explicit",
        "strict": true
    }
}

рдлрд┐рд░ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐:

import foo from './foo.ts'; // no ts(2691) here

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ:

import foo from './foo.js';

рд▓реЛрдЧ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ) рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ Node.js, Deno рдФрд░ рд╡реЗрдм рдХреЗ рдмреАрдЪ рдХреЛрдб рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ/рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЖрдк vscode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрдВрддрд░рд┐рдо рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ settings.json рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ:

"typescript.preferences.importModuleSpecifierEnding": "js"

рдпрд╣ рдЖрдкрдХреЗ рдЖрдпрд╛рдд рдкрдереЛрдВ рдореЗрдВ .js рдЬреЛрдбрд╝ рджреЗрдЧрд╛ (рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕реНрд░реЛрдд рдореЗрдВ *.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп .js рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛)ред рдмрдВрдбрд▓рд░ рдХреЗ рдмрд┐рдирд╛ tsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред

рдЬрдмрдХрд┐ рд╣рдо рдПрдХ tsc рд╕рдорд╛рдзрд╛рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдПрдХ рдирд┐рдореНрди-рддрдХрдиреАрдХреА рд╕рдорд╛рдзрд╛рди рд╣реИ

  1. рд╕рднреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ
  2. рдирд┐рд░реНрдорд╛рдг рд╕реЗ рдкрд╣рд▓реЗ рдЖрдпрд╛рдд рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд┐рдХрд╛рд▓реЗрдВ

рдореИрдВ рдЗрд╕ рд╡рди-рд▓рд╛рдЗрдирд░ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рддрд╛рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред рдпрд╣ src/ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ tmp/ рдореЗрдВ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╣рд╛рдВ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред

npx shx cp -r ./src/ ./tmp/ && npx rexreplace "(^┬зs*?(?:import|export).*?from┬зs+?(['\"]).*?)┬з.ts┬з2" тВм1тВм2 './tmp/**/*.{ts,js,tsx,jsx}'

package.json рдореЗрдВ рдПрдХ рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ ( yarn add --dev shx rexreplace рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж) рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ

"scripts":{
  "build": "yarn build-esm && yarn build-tsc",
  "buil-esm": "...Whatever you normally do...",
  "build-tsc": "shx mkdir -p tmp && shx cp -r ./src/* ./tmp && rexreplace \"(^┬зs*?(?:import|export).*?from┬зs+?(['\\\"]).*?)┬з.ts┬з2\" тВм1тВм2 './tmp/**/*.{ts,js,tsx,jsx}' && tsc src/index.ts && shx rm -r ./tmp"
}

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

tsc -b tsconfig-solution.json -w --listEmittedFiles \
  | node mk/build-post.js

рдмрд┐рд▓реНрдб-рдкреЛрд╕реНрдЯ.рдЬреЗрдПрд╕ рдкреЛрд╕реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИред

.js рд╕реЗ import рдФрд░ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЗ export рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

export { X } from "./first";
import { Y } from "./second";

рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

export { X } from "./first.js";
import { Y } from "./second.js";

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рдХрд╣реАрдВ рднреА index.ts рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдбреЗрдиреЛ рд╕рдореНрдореЗрд▓рди рдХреЗ рдмрд╛рдж mod.ts рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореБрдЭреЗ /index.js рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

CommonJS рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП import рд╕реЗ require рдмрджрд▓реЗрдВ

рдореЗрд░рд╛ рдХреЛрдб рдореЙрдбреНрдпреВрд▓ рдореЛрдб рдореЗрдВ рдиреЛрдб ^12.17 рдФрд░ ^14.1 рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ ES рдореЙрдбреНрдпреВрд▓ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрдИ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЕрднреА рднреА рдЕрдкрдиреЗ "main" рдлрд╝реАрд▓реНрдб рдореЗрдВ CommonJS рд░рдЦрддреА рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореБрдЭреЗ рдиреЛрдбрдЬреЗрдПрд╕ рдмрд┐рд▓реНрдЯрд┐рди рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЗрдиреНрд╣реЗрдВ рдХреЙрдордирдЬреЗрдПрд╕ рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

import { Server as WsServer } from "ws";

рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

import { createRequire } from "module";
const require = createRequire(import.meta.url);
const { __importDefault } = require("tslib");

const { Server: WsServer } = require("ws");

рд▓реЗрдХрд┐рди рдлрд┐рд░, рд╡реЗрдмрдкреИрдХ рдЗрди require s рд╕реЗ рдирд╛рдЦреБрд╢ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

/// #if false
import { createRequire } from "module";
const require = createRequire(import.meta.url);
const { __importDefault } = require("tslib");
/// #endif

/// #if false
const { Server: WsServer } = require("ws");
/*
/// #else
import { Server as WsServer } from "ws";
/// #endif
/// #if false
*/
/// #endif

рд╡реЗрдмрдкреИрдХ рдореЗрдВ, рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдкреИрдХреЗрдЬ рдХреЛ ifdef-loader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдлрд┐рд░ рд╡реЗрдмрдкреИрдХ рдХреЛ рдореВрд▓ import рд▓рд╛рдЗрди рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред

рд╣рдо рднреА рдЗрд╕рдХреА рдЪрдкреЗрдЯ рдореЗрдВ рдЖ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ 3 рд╕рд╛рд▓ рдмрд╛рдж рднреА рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рд╣рдо рд╡реЗрдмрд╕реНрдЯреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП VSCode рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред
рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИред
рдпрд╣ рддреГрддреАрдп-рдкрдХреНрд╖ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

+1

рдПрдПрд╕рдкреАрдиреЗрдЯ рдХреЛрд░ 3.1 рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдореЗрд░рд╛ рдХрд╛рдордХрд╛рдЬ рд╣реИ (рд╢рд╛рдпрдж рдирд┐рдЪрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)
рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк.рд╕реАрдПрд╕ рдореЗрдВ:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            var rewriteOptions = new RewriteOptions();
            rewriteOptions.AddRewrite(@"^js/(.+)", "js/$1.js", skipRemainingRules: true);

            app.UseRewriter(rewriteOptions);

            app.UseStaticFiles();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Hello World!");
                });
            });
        }

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

рдпрд╣рд╛рдВ рд╕рднреА рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд▓реАрдХ рд╕реЗ рд╣рдЯрдХрд░ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рд▓реЗрдХрд┐рди рддрдм рддрдХ...

рд╢рд╛рдпрдж рдпрд╣ TS рдореЗрдВ рдирдпрд╛ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ? Node.js рдХреЗ рдкрд╛рд╕ рдЕрдм рдореВрд▓ ESM рд╕рдорд░реНрдерди рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рдпрд╣ --experimental-specifier-resolution=node рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдереЛрдбрд╝реЗ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред рдбреЗрдиреЛ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд░ рднреА рд╣реИрдВред рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
tsconfig.json:

{
    "compilerOptions": {
        "moduleResolution": "explicit",
        "strict": true
    }
}

рдлрд┐рд░ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐:

import foo from './foo.ts'; // no ts(2691) here

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ:

import foo from './foo.js';

рдореИрдВрдиреЗ node/file-extension-in-import рдирд┐рдпрдо рдХреЛ eslint-plugin-node #$ рдореЗрдВ рд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрдореНрдкреЛрд░реНрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ) рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ "moduleResolution": "node" config рд╣реИ рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ ts(2691) рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ @ evg656e рдиреЗ рдЬреЛ рдХрд╣рд╛ рд╡рд╣ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИред

рдЬрдм рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
"baseUrl": ".", "paths": { "/*": ["./*"] },

рдЖрдк рдЗрд╕ рддрд░рд╣ рдПрдХ рдирд┐рд░рдкреЗрдХреНрд╖ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
`рдЖрдпрд╛рдд ws "/ рд╣реЗ/рдХрдиреЗрдХреНрд╢рди" рд╕реЗ;

рд▓реЗрдХрд┐рди ".js" рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдЕрдЪрд╛рдирдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХрдиреЗрдХреНрд╢рди.ts рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдХрд╣рддрд╛ рд╣реИ:

Could not find a declaration file for module '/hey/connection'. '/home/tobi/Documents/JITcom/Code/Libs/Test_Browser/hey/connection.js' implicitly has an 'any' type.

рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рд╕рдм рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ

рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рднреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдзрдиреНрдпрд╡рд╛рджред

рдпрд╣ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ! :00

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

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

рдореИрдВ рдЬреЗрд╕реНрдЯ рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЛ рдЦреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред
рдЬрдм рдореИрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ tsc --listEmittedFiles рдЖрд╣реНрд╡рд╛рди рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд╛рдЗрдк рдХрд░рддрд╛ рд╣реВрдВред рдиреЛрдб (рдореЙрдбреНрдпреВрд▓ рдореЛрдб рдореЗрдВ) рдХреЛ рдЦреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рддреА рд╣реИред
https://github.com/yoursunny/NDNts/blob/fa6b2eb68a9f32a6a2e24e5475275f803236b8f8/mk/build-post.js

@kj

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

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

рдЬрд┐рд╕ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЖрдк _is_ .js рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдкреНрд░рдХрд╛рд░ рдпрд╛ рддреЛ .ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╛ .d.ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ .d.ts рдлрд╝рд╛рдЗрд▓ рдХреЛ .js рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рд╣реЛрджрд░ рд╣реЛрдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ .d.ts рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмреАрдЪ 1-рд╕реЗ-1 рд╕рдВрдмрдВрдз рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

.js рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рд╕реНрдерд┐рд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕реЗ tsc рдЪреБрди рд╕рдХрддрд╛ рдерд╛ред рдЕрдиреНрдпрдерд╛ рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реЛрдВрдЧреЗ рдЬрд╣рд╛рдВ рдЖрдк рдкреНрд░рдХрд╛рд░ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ tsc рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдкрде рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред

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

рдЬрд┐рд╕ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЖрдк _is_ .js рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рдЖрдк рдпрд╣рд╛рдБ рдирд┐рд░реНрдорд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣реИ рдирд╛? рд╕реНрд░реЛрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ .js рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди .ts рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ?

рдХреНрдпрд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдкрде рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .ts рдпрд╛ .tsx рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ .js рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @kj рдкрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЗрд╕рдХреА рдЧрд▓рддрдлрд╣рдореА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрдм рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ .ts рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк tsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ ts рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдХ js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк (рдиреЛрдб рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░) рд╣реЛрддреЗ рд╣реИрдВред

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ @ mkay581 , рд▓реЗрдХрд┐рди рдХрд╣реЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдкрдВрдХреНрддрд┐ foo.ts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ:

import { Component } from './Component.js';

рдореИрдВ рдЬрд┐рд╕ 'Component.js' рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ 'Component.tsx' рд╣реИ (рдХреЛрдИ .js рдлрд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕реЗ рдлрд╛рдЗрд▓ рдХреЗ рдЕрдВрддрд┐рдо рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд╣реАрдВ рд╕рдордЭ рд░рд╣рд╛ рд╣реИ?), рдлрд┐рд░ рднреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╡рд╣реА рдЖрдпрд╛рдд рд▓рд╛рдЗрди рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрддреА рд╣реИ (.js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдЬреЛ рддрдм рдиреЛрдб рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрд░реАрдХрд╛ (AFAIK) рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдмрд┐рдирд╛ рдЙрд╕ рдЖрдпрд╛рдд рд▓рд╛рдЗрди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ:

import { Component } from './Component';

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдареАрдХ рднреА рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ transpiled .js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди './Component' рдкрд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХреБрдЫ рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдФрд░ рд╕рдВрднрд╡рддрдГ рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ) рдЯреА рдЗрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдврд╝реЗрдВ)ред

рджреВрд╕рд░реА рддрд░рдл, рдЕрдЧрд░ рдореИрдВ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ:

import { Component } from './Component.tsx';

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

рддреЛ, рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ .ts рдпрд╛ .tsx рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ, рдлрд┐рд░ рднреА рдпрд╣ рдХреЗрд╡рд▓ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдкрде рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ ES рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде) рдпрд╛ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдЬреЛ рдХреЗрд╡рд▓ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕реА рдХреЛрдИ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИред

@justinfagnani

рдЬрд┐рд╕ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЖрдк _is_ .js рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ tsc рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд╕рд╣реА рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдЬрдм рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддрдм рддрдХ рдХреЛрдИ .js рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕реЗ рдмрдирд╛рдирд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдХрд╛рдо рд╣реИред

TS JS рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЕрдореВрд░реНрддрддрд╛ рдХреА рдПрдХ рдкрд░рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ .js рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕рдВрдХрд▓рди рдЪрд░рдг рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВред рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде рд╡рд╣рд╛рдВ рд╣реЛрдиреЗ рдкрд░ рдЧрд┐рдирдирд╛ рдЕрдореВрд░реНрддрддрд╛, рдЖрдИрдПрдордУ рдХреЛ рддреЛрдбрд╝рдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ рддреЛ, рдЬрдм рдЖрдк C рдпрд╛ C++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ #include .o рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЖрдк .h рдпрд╛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ .c рдпрд╛ .cpp ред

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

@kj

рдпрд╣ рдЕрдЬреАрдм рдирд╣реАрдВ рд╣реИ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣реИрдХреА рдирд╣реАрдВ рд╣реИ

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

@borfast @frzi рд╣рд╛рдВ, рдореВрд▓ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рд▓рдЧрд╛, рдФрд░ рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдХрд░ рдЦреБрд╢реА рд╣реБрдИ рдХрд┐ рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдВ рдЬреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реА рдзрд╛рд░рдгрд╛рдПрдВ рдЗрддрдиреА рдирдИ рди рд╣реЛрдВ!

@frzi

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

рдХрд╛рд▓реНрдкрдирд┐рдХ рдирд╣реАрдВ, рдЯреАрдПрд╕рд╕реА рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред tsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред

рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк .ts рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдПрдХ рдРрд╕реА рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдХреЛрдб рдмрдВрдбрд▓ рдХрд░рддреЗ рд╕рдордп

рдмрдВрдбрд▓рд░ tsc . рдХреЗ рдкреАрдЫреЗ рдЪрд▓рддреЗ рд╣реИрдВ

@kj рдиреЗ .tsx рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╡реЗ рдореЗрд░реА рдмрд╛рдд рдХреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рдШрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред .tsx рдХреЗрд╡рд▓ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд╣реИ, _locally_, рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ JSX рд╣реИред рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдпрд╛рддрдХреЛрдВ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ JSX рдерд╛, рдФрд░ рд╡реЗ рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддреЗред рдлрд╝рд╛рдЗрд▓реЗрдВ .tsx, .ts, рдФрд░ .js/.d.ts рдЬреЛрдбрд╝реЗ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрдмрд╛рдз рд░реВрдк рд╕реЗ рдкреЛрд░реНрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк рдПрдХ .ts рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

import {Component} from './component.ts';

рдФрд░ рдлрд┐рд░ рдЖрдк рдШрдЯрдХ рдХреЗ рд▓рд┐рдП JSX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ рдШрдЯрдХ.tsx рдХрд░ рджреЗрдВред рдХреНрдпрд╛ рд╕рднреА рдЖрдпрд╛рдд рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП? рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк .ts рд╕реЗ .js/.d.ts рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЖрдпрд╛рдд рдлрд┐рд░ рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

@ рдмреЛрд░рдлрд╛рд╕реНрдЯ

TS JS рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЕрдореВрд░реНрддрддрд╛ рдХреА рдПрдХ рдкрд░рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ .js рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕рдВрдХрд▓рди рдЪрд░рдг рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВред рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде рд╡рд╣рд╛рдВ рд╣реЛрдиреЗ рдкрд░ рдЧрд┐рдирдирд╛ рдЕрдореВрд░реНрддрддрд╛, рдЖрдИрдПрдордУ рдХреЛ рддреЛрдбрд╝рдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

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

@justinfagnani рдЖрдк рдЬреЛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рд╕реЗ рдореИрдВ рдереЛрдбрд╝рд╛ рдЦреЛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рд░реНрдл рдпрд╣ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдорд╛рди рд╕рдХрддрд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ .ts рдпрд╛ .tsx рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдпрд╛рдд рдкрде рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ .js рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдмрд╛рдж рд╡рд╛рд▓реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

@justinfagnani

рдХрд╛рд▓реНрдкрдирд┐рдХ рдирд╣реАрдВ, tsc _knows_ рдпрд╣ рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред tsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред

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

рдЖрдк рдЬрд┐рд╕ "рдЧрд╛рд░рдВрдЯреА" рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рджреЛрдиреЛрдВ рддрд░рд╣ рд╕реЗ рд╣реИред рдпрджрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, "tsc _knows_ рдпрд╣ [js рдлрд╝рд╛рдЗрд▓реЗрдВ] рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛", рддреЛ рдпрд╣ рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди рд╣реИ: "рдареАрдХ рд╣реИ, рддреЛ tsc рдЗрд╕ рдЧрд╛рд░рдВрдЯреА рдкрд░ рдХрд╛рд░реНрдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рдЗрд╕реЗ _knows_ рд╣реИ рд╕рдВрдХрд▓рд┐рдд рдЬреЗрдПрд╕ рд╕реЗ рдЧрд╛рдпрдм рд╣реИ?"

рдЗрд╕ рддрдереНрдп рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ "tsc js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ" рджреЛрдиреЛрдВ рддрд░рд╣ рд╕реЗ рдЬрд╛рддрд╛ рд╣реИред

рддреЛ рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, @justinfagnani , рдЖрдкрдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ _is_ рдорд╛рдиреНрдп рд╣реИ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ "tsc рдХреЛ рдЗрд╕рд▓рд┐рдП _рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдкрд░ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП_ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП"ред рдФрд░ рдЬреЛ рдмрд╛рдд рдореБрдЭреЗ рд╢реБрд░реВ рд╕реЗ рд╣реА рдЗрд╕ рдкреВрд░реА рдмрд╣рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдХрд░рддреА рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдХреИрд╕реЗ _рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ_ рдЗрд╕ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓рдЧрднрдЧ рдЙрдкрд╣рд╛рд╕ рдХреЗ рдмрд┐рдВрджреБ рддрдХред рдпрд╣ рдЕрдиреБрдЪрд┐рдд рд╣реИред

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

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдХреГрдкрдпрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдУрдкреА рдХрд╛ рдкреНрд░рд╢реНрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдиреНрдп рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╣реИ - рд╢рд╛рдпрдж рдЖрдкрдХреЗ рд╕рд╛рде рднреАред рдХрдареЛрд░ рдмрд╣рд╕ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

рд╢реБрдХреНрд░рд┐рдпрд╛

@justinfagnani

рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк .ts рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдПрдХ рдРрд╕реА рдлрд╝рд╛рдЗрд▓ рдЖрдпрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдмреЗрд╢рдХ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ .h рдлрд╝рд╛рдЗрд▓ рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдареАрдХ рдпрд╣реА рдмрд╛рдд рд╣реИ: рдЖрдк рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ, рд╕рдВрдХрд▓рд┐рдд рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВред

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

рдЕрдм, рдЙрдЪрд┐рдд tsc рдлрд┐рдХреНрд╕ рд╣реЛрдЧрд╛:

  • рд╣рдорд╛рд░реЗ рдкрд╛рд╕ .ts рдлрд╝рд╛рдЗрд▓ рд╣реИ
  • рд╣рдо рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
  • tsc рдЙрд╕ .ts рдлрд╝рд╛рдЗрд▓ рдХреЛ .js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реИ
  • tsc рдлрд┐рд░ .ts рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рднреА рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ .ts .js рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ (рдпрд╣ рдареАрдХ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)

рд╕рдорд╕реНрдпрд╛: "рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рджреЗрд╡" рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реЗрдм рджреЗрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рдиреЛрдб.рдЬреЗрдПрд╕ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рдФрд░ рд╕рдВрдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдкрде) рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред tsc рдЕрдм рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, coz my-awesome-module/test рдЖрдпрд╛рдд рдХрд░рдирд╛ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, test.js рдореЗрдВ node-modules/my-awesome-module рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░ index.js рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ test рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ node-modules/my-awesome-module , рдЧреИрд░-рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдЬреИрд╕реЗ ./local-mocks/my-awesome-module/mock.json рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕реНрдерд╛рдиреАрдп рдкреБрдирд░реНрд▓реЗрдЦрди рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

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

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

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

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

рдореИрдВ рд╕рднреА рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдпрд╣рд╛рдВ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреА рдореВрд▓рднреВрдд рдЕрд╕рд╣рдорддрд┐ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдЬрдм .ts рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗ рд░рд╣реА рд╣реЛрдВ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдкрд╣рд▓реЗ рд╣реА рд╢реБрд░реВ рд╣реЛ рдЪреБрдХреА рд╣реИред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ ~run~ рдХрдВрдкрд╛рдЗрд▓ рд╕реЛрд░реНрд╕ .ts рдлрд╛рдЗрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ - рди рдХрд┐ .js рдлрд╛рдЗрд▓реНрд╕ рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдХреЛрдИ рджреЗрд╡ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ _entire_ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдирд╛рде .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд╣реАрдВ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рддреЛ рдмрд╕ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреАрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдмрджрд▓реЗрдВ (рдпрд╛ рдЯреАрдПрд╕ рдХреЗ рдкрде рдореИрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ .js рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрдпрд╛рдд рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ)ред рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред :man_shrugging:

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

@ mkay581 рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХрднреА рднреА рдХреБрдЫ рднреА рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рдерд╛, рдХреЗрд╡рд▓ JS рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

@valeriob рд╕рд░рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдпрдж рдХреБрдЫ рдлрд╛рдЗрд▓реЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдВрдЧреА, рдЬрд┐рдиреНрд╣реЗрдВ рдмрдВрдбрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЖрдЬрдХрд▓ рдЖрдпрд╛рдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИрдВ, рдЙрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реБрдирдиреЗ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХреЛ рдорд┐рд▓рд╛рди рдорд╛рд░реНрдЧ рдкрд░ рдореИрдк рдХрд░реЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдЧ fetch рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрд╛рд░ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рдмрд╛рдж рдЧреИрд░-рд╕рдВрдХрд▓рд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯрд┐рдВрдЧ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд▓рд┐рдЯ- html, HyperHTML, рдпрд╛ рдкреБрд░рд╛рдиреЗ рд╡рд╛рд▓реЗ рдЬреИрд╕реЗ рдореВрдВрдЫреЗрдВ, рд╣реИрдВрдбрд▓рдмрд╛рд░, рдкрдЧ рдЖрджрд┐)ред рд╣реЛ рдЧрдпрд╛, рдлреИрдВрд╕реА рд╡реЗрдмрдкреИрдХ, рдлреНрд░реЗрдорд╡рд░реНрдХ рдпрд╛ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╢реНрд░реЛрддрд╛рдУрдВ, рд░реЗрдЧреЗрдХреНрд╕рдкреА, рдлрд╝реЗрдЪ, рд╡рд╛рджреЗ рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЬреЗрдПрд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рдЗрдВрдЬрди рднреАред

рдзрдиреНрдпрд╡рд╛рдж @Draccoz , рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд╕рд░рд▓ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ? https://github.com/valeriob/Typescript_Non_SPA
рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг .ts рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ JS рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ rxjs) рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдПрдХ html рдкреГрд╖реНрда рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрднреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред

@valeriob рдпрд╣ рдЙрддрдирд╛ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдзрд┐рдХрд╛рдВрд╢ рддреГрддреАрдп рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп, рднрд▓реЗ рд╣реА рд╡реЗ рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ ES рдореЙрдбреНрдпреВрд▓ рд╕рдВрдЧрдд рд╣реИрдВ, рд╡реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред
рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕ рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рдореВрд▓ рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рд▓рд╛рдиреЗ рдореЗрдВ рдореЗрд░реА рджрд┐рд▓рдЪрд╕реНрдкреА рдереА, рд▓реЗрдХрд┐рди рд╡реЗ рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЗ рд╣рд▓ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡реЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдВ (рдордЬрд╛рдХрд┐рдпрд╛ ...)ред
рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдореИрдВ рдбрд┐рдЬрд╛рдЗрди рдХрд░ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рд╢реБрд░реВ рдореЗрдВ рд╕рднреА рдЖрдпрд╛рддреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП sed рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдкрде рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рджреЗрд╡ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╡рд┐рдЪрд╛рд░ рдмрджрд▓ рджрд┐рдпрд╛ред рдореЗрд░реА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ рдХрд┐ рдЖрд░рдПрдХреНрд╕рдЬреЗрдПрд╕, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд▓рд┐рдЯ-рдПрдЪрдЯреАрдПрдордПрд▓ (4 рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЗ рд╕рд╛рде рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЕрд▓реНрдЯреНрд░рд╛ рдлрд╛рд╕реНрдЯ рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдг/рдмрд┐рд▓реНрдб) рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрд░реЗ рдРрдкреНрд╕ рдореЗрдВ рдХреЛрдИ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ TS рдкрдереЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рд╡реИрд╕реЗ рднреА рдХреЛрдб рдХреА рд▓рдЧрднрдЧ 90 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВред рдпрд╣ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реИ, рдЕрдЧрд░ рдХреЛрдИ рд▓рд┐рдВрдХ рдЪрд╛рд╣рддрд╛ рд╣реИ рддреЛ рдмрд╕ рдореЗрд░реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧрдардиреЛрдВ рд╕реЗ рдкреВрдЫреЗрдВ рдпрд╛ рдЬрд╛рдВрдЪреЗрдВред

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

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

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

рдХрдИ рдорд╛рдирд╕рд┐рдХ рдЬрд┐рдореНрдирд╛рд╕реНрдЯрд┐рдХ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдпрд╣ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред

рдпрд╣ рд╕рдордЭрд╛рддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ _рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП__рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ_рд╣реИред рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЙрдбрд▓ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдереЛрдкрдирд╛ рдЪрд╛рд╣рд┐рдПред (рдпреВрдПрдХреНрд╕ рд╕рд╛рдорд╛рди)

рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ @borfast рдХреЗ рдЕрдиреБрд╕рд╛рд░ tsc рдХреЛ C- рдЬреИрд╕реЗ рд╕рдВрдХрд▓рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╡рд╣ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдорд╛рдирд╕рд┐рдХ рд╡рд┐рдзрд╛ рд╣реИ рдЬрд┐рд╕реЗ tsc рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд╡рдЬреВрдж рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдУрдкреА рдХреЗ рдкреНрд░рд╢реНрди рдореЗрдВ 200+ рдЕрдВрдЧреВрдареЗ рд╣реИрдВ, рд░реЗрдкреЛ рдкрд░ рдЕрдиреНрдп рд╕рднреА рдореБрджреНрджреЛрдВ рд╕реЗ рдЕрдзрд┐рдХред

рдпрд╣ рдореБрджреНрджрд╛ рдПрдХ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╡реЛрдЯ рдХрд╛ рд╣рдХрджрд╛рд░ рд╣реИред рдХреГрдкрдпрд╛ рдорддрджрд╛рди рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдпрджрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ tsc рдЙрдирдХреЗ рдЖрдпрд╛рдд рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗ, рддреЛ рдпрд╣ рд╕рд╣реА рдЙрддреНрддрд░ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдЪреАрдЬреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдпрд╣реА UX рддрд░реАрдХрд╛ рд╣реИред

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

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

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

@Draccoz , рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рдХрд╛рд░ рдЧрд┐рдпрд░ рд╢рд┐рдлреНрдЯ рдХрд░реЗ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ 10 рдХрд┐рдореА/рдШрдВрдЯрд╛ рд╕реЗ рддреЗрдЬ рдбреНрд░рд╛рдЗрд╡ рдХрд░ рд╕рдХреЗрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдХрднреА рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЧрд┐рдпрд░ рдЯреНрд░реЗрди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЕрдХреЗрд▓реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд░реЗрдВред

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдмрдВрдбрд▓рд░ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдХреЗ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрд╡рд░реЛрдзрдХ рдХреНрдпреЛрдВ рд╣реИ?

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

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдЕрд╕рдВрднрд╡ рдХреНрдпреЛрдВ рд╣реИред

@Draccoz рд╣реИрд▓реЛ :) рдареАрдХ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рджреЗрдЦрд╛, рдЖрдк рджреЛ рдЪреАрдЬреЗрдВ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ:

  1. рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

  2. рдореИрдВ, рдбреЗрд╡рд▓рдкрд░, tsc рдХреЛ рдХреИрд╕реЗ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рддреЛрдВ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

рдпрд╣рд╛рдБ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред

  1. рдХреГрдкрдпрд╛ @borfast рдХрд╛ рдЙрддреНрддрд░ рджреЗрдЦреЗрдВ; рдпрд╣ рдПрдХ "рдЙрдЪреНрдЪ-рдЖрджреЗрд╢" рдЙрддреНрддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖рд┐рдкреНрдд :)

  2. рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ tsc/tsconfig, рдЬреИрд╕реЗ "renameImports":true, рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╕рд┐рдЧреНрдирд▓ рдЬреЛ tsc рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛ рдлрд╝реНрд▓реИрдЧ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБред рдпрджрд┐ рдЕрдзрд┐рдХ рд╕рдЯреАрдХрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдзреНрд╡рдЬ рдмреВрд▓рд┐рдпрди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдмрд▓реНрдХрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╢рд╛рдпрдж рдРрд╕рд╛ рдХреБрдЫ:

рдорд╛рдирдХ рдЖрдпрд╛рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди: 'рдЬреЗрдПрд╕'

рдЗрд╕рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд┐рдирд╛ рд╕рднреА рдЖрдпрд╛рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ .js

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

@borfast рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдкреВрдЫрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╕ рд╕рд╣рдордд рдерд╛ рдХрд┐ рдпрд╣ рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ - рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдпрд╣ рдЙрдЪрд┐рдд рддрд░реНрдХ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдХрд╛рд░ рдирд┐рд░реНрдорд╛рддрд╛ рдЙрджрд╛рд╣рд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдЕрдзрд┐рдХ рд╣реИ "рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реА рдХрд╛рд░ 100k рдореАрд▓ рдХреА рджреВрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░реНрдг рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ рдХрд╛рд░ рд╣реЛ рдФрд░ рдПрдХ рдЬреЗрдЯ рдХреА рд╢реАрд░реНрд╖ рдЧрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЧрддрд┐ рд╣реЛред рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдореБрдЭреЗ рдпрд╣ рдЪрд╛рд╣рд┐рдП рдФрд░ рдмрд╕ рдЗрддрдирд╛ рд╣реА - рдЕрд╡рдзрд┐ред
@ рдореЗрд░реЗ рд╕рд╡рд╛рд▓реЛрдВ рдореЗрдВ рдереЛрдбрд╝реА рдЧрд▓рддрдлрд╣рдореАред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрдЫ рд░рд╣рд╛ рдерд╛: рдЯреАрдПрд╕рд╕реА рдХреЛ рдпрд╣ рдХреИрд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рдП рдХрд┐ рдкрде рдХрд┐рд╕ рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╕реАрдзреЗ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓ рд╣реИ? рдпрд╛ рдпрд╣ index.ts рдХреЗ рдЕрдВрджрд░ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ? рдпрд╛ рдпрд╣ package.json рд╡рд╛рд▓рд╛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ main рдлрд╝реАрд▓реНрдб рд╣реИ? рдпрд╛ рдПрд╕рдиреЗрдХреНрд╕реНрдЯ рдлреАрд▓реНрдб? рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдЬреЛ рдЧреИрд░-рдорд╛рдирдХ рд╣реИ? рдпрд╛ рдпрд╣ рдПрдХ рдкрде рд╣реИ рдЬрд┐рд╕реЗ рд╡реЗрдмрдкреИрдХ рджреНрд╡рд╛рд░рд╛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ? рдпрд╛ рд░реЛрд▓рдЕрдк? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╣рд╛рдВ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рдФрд░ рдмрдВрдбрд▓рд░ рд╣реИ? рдХреБрдЫ рдХрдо рдЬреНрдЮрд╛рдд? рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреНрдпрд╛ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рд╡рд╛рдХреНрдп рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛?

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ tsc/tsconfig, рдЬреИрд╕реЗ "renameImports":true, рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╕рд┐рдЧреНрдирд▓ рдЬреЛ tsc рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛ рдлрд╝реНрд▓реИрдЧ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБред

@weoreference рдХреНрдпрд╛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрде рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? TSconfig рдлрд╝рд╛рдЗрд▓ рдореЗрдВ paths рд╡рд┐рдХрд▓реНрдк рд╣рдореЗрдВ JS рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЖрдпрд╛рдд рдкрде рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рджреЗрддрд╛ рд╣реИред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдореИрдВ рдЧрд▓рдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

@Draccoz рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рджреЗрдВ

рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреНрдпрд╛ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рд╡рд╛рдХреНрдп рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛?

рдЕрд░реЗ рд╣рд╛рдБ, рдЯреАрдПрд╕рд╕реА рдХреЗ рд▓рд┐рдП рдЗрди рд╕рднреА рдкрд░реНрдпрд╛рд╡рд░рдг/рдмрд┐рд▓реНрдб рдЯреВрд▓ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рд╣реЛрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред

рд▓реЗрдХрд┐рди tsc рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ _most_ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ, рдФрд░ рдпрд╣ "рдорд╛рдирдХ рдЖрдпрд╛рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди" рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд╛рди рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╕рдордЭрд╛рдпрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдпрд╣рд╛рдБ "рдЧрд╛рд░рдВрдЯреА" рдХреА рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ, рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ tsc рдХреЛ "рдЧрд╛рд░рдВрдЯреА" рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдВрдХрд▓рд┐рдд js рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ [рдХреБрдЫ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░] рдЪрд▓реЗрдЧрд╛ред

рдЕрдЪреНрдЫрд╛... рд╢рд╛рдпрдж рдпрд╣ рдмрд╣реБрдд рдХрдард┐рди рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдереАред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, tsc рдХреЗ рд▓рд┐рдП рдпрд╣ рдЧрд╛рд░рдВрдЯреА рджреЗрдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИ рдХрд┐ js [рдХреБрдЫ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░] рдЪрд▓реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЕрднреА рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди JS рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЙрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИред

рд▓реЗрдХрд┐рди @borfast рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рд╛рдзрд╛рд░рдг рдлрд╝реНрд▓реИрдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛ tsc рдЖрдЬрд╝рдорд╛рдиреЗ рд╡рд╛рд▓реЗ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдордирд╛ рдХреА рдЧрдИ JS рдЖрдпрд╛рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ _most_ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИред

рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧ, рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рдЗрди рд╕рднреА рдмрд╛рддреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ тАФ

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

- рдареАрдХ рд╣реИ, рд╡рд╣ рдЙрдкрдпреЛрдЧ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдмрдВрдбрд▓рд░ рдФрд░ рдЕрдиреНрдп рдЯреВрд▓ рдкрд░ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЖрд╕рд╛рди рдорд╛рдорд▓реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдФрд░ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдорд╛рдорд▓рд╛ рдЖрдпрд╛рдд рдореЗрдВ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдирд╛ рд╣реИ; рдЬрд┐рд╕реЗ рд╣рдо рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

@weoreference

рдХрд╛рд▓реНрдкрдирд┐рдХ рдирд╣реАрдВ, рдЯреАрдПрд╕рд╕реА рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред tsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИред

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

рдЖрдк рдЬрд┐рд╕ "рдЧрд╛рд░рдВрдЯреА" рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рджреЛрдиреЛрдВ рддрд░рд╣ рд╕реЗ рд╣реИред рдпрджрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, "tsc рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ [js рдлрд╝рд╛рдЗрд▓реЗрдВ] рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛", рддреЛ рдпрд╣ рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди рд╣реИ: "рдареАрдХ рд╣реИ, рддреЛ tsc рдЗрд╕ рдЧрд╛рд░рдВрдЯреА рдкрд░ рдХрд╛рд░реНрдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рдЗрд╕реЗ рдкрддрд╛ рд╣реИ рд╕рдВрдХрд▓рд┐рдд рдЬреЗрдПрд╕ рд╕реЗ рдЧрд╛рдпрдм рд╣реИ?"

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

@justinfagnani @Draccoz рдзрдиреНрдпрд╡рд╛рдж; рдареАрдХ рд╣реИ, рд╣рд╛рдБ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдБред

рдореЗрд░реА рдЕрдВрддрд┐рдо рдЯрд┐рдкреНрдкрдгреА: "рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдХрдард┐рди рдорд╛рдорд▓реЛрдВ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЖрд╕рд╛рди рдорд╛рдорд▓реЛрдВ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред"

рд╢реБрдХреНрд░рд┐рдпрд╛

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

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

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд╛ рдпрд╣ рдЦрдВрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди 'рд╣реЛрд╕реНрдЯ-рдбрд┐рдлрд╝рд╛рдЗрдВрдб' рд╣реИ?

@kj рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╛рда HTML рдпреБрдХреНрддрд┐ рдореЗрдВ рд╣реИ: https://html.spec.whatwg.org/multipage/webappapis.html#resolve -a-module-specifier

рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЖрдпрд╛рдд рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдкреВрд░реНрдг URL рдпрд╛ рдкреВрд░реНрдг рдпрд╛ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ URL рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЖрдорддреМрд░ рдкрд░ http:// рдпрд╛ https:// рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ) рдпрд╛ / , ./ , рдпрд╛ ../ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ

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

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

рд╕рднреА рдиреЗ рдмрддрд╛рдпрд╛, .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tsc рдХрд╛ рд╕рдорд░реНрдерди рдиреЛрдб рдФрд░ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреЛрдиреЛрдВ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд╣реАрди рдЖрдпрд╛рдд рд╣реИ рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреИрдХреЗрдЬ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдиреЛрдб рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯреВрд▓ рдХреНрд▓рд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ () рд╢реИрд▓реА рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рд╛рдкреЗрдХреНрд╖ рдкрдереЛрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдирдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рднреА рдЬреЛрдбрд╝реЗрдВрдЧреЗред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ es-dev-server рдХрд░рддрд╛ рд╣реИред

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

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЕрднреА рдХреЗ рд▓рд┐рдП, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВ):

https://nodejs.org/api/esm.html#esm_customizing_esm_specifier_resolution_algorithm

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╛ рддреЛ ' рд╕рд╛рдЗрдЯ: typescriptlang.org рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ-рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди' рдпрд╛ ' рд╕рд╛рдЗрдЯ: рд╕реНрдЯреЗрдЬрд┐рдВрдЧ -рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ.org рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ-рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди' рдЦреЛрдЬ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЪреВрдВрдХрд┐ рдпрд╣ рдЕрднреА рднреА рдиреЛрдб рдореЗрдВ рдХрд╛рдлреА рдирдпрд╛ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдирд╣реАрдВ рд╣реИред

@justinfagnani рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЬрд╣рд╛рдВ рдХреЛрдИ рд╡реИрдЪрд╛рд░рд┐рдХ рд░реБрдЦ _рдХреЗ рдЦрд┐рд▓рд╛рдл рд▓реЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/TypeStrong/ts-node/issues/783, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ)ред

рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдкрд░ @quantuminformation рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдирд┐рд░реНрднрд░рддрд╛-рдореБрдХреНрдд рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛ рд╣реИред рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рд░реЗрдЧреЗрдХреНрд╕ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдЙрди рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА .js рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рд╡рд╣реА рдЬрд░реВрд░рдд

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

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

рдЬрдм рддрдХ рдХреЛрдИ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рди рд╣реЛ, рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЛ-рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдиреЛрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ

рдЖрдк package.json рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:

  ..
    "scripts": {
        "build": "node build.js",
   ...

//build.js
import { execSync} from "child_process"
import * as util from "util"
import * as fs from "fs"
import * as path from "path"

//function to recurse dirs finding files
function fromDir(startPath, filter, callback) {

    //console.log('Starting from dir '+startPath+'/');

    if (!fs.existsSync(startPath)) {
        console.log("no dir ", startPath);
        return;
    }

    var files = fs.readdirSync(startPath);
    for (var i = 0; i < files.length; i++) {
        var filename = path.join(startPath, files[i]);
        var stat = fs.lstatSync(filename);
        if (stat.isDirectory()) {
            fromDir(filename, filter, callback); //recurse
        }
        else if (filter.test(filename)) callback(filename);
    };
};

//this add .js to lines like:  import .* from "\.  <-- only imports from ./ or ../ are touched
function addDotJsToLocalImports(filename) {
    var buf = fs.readFileSync(filename);
    let replaced = buf.toString().replace(/(import .* from\s+['"])(?!.*\.js['"])(\..*?)(?=['"])/g, '$1$2.js')
    if (replaced !== buf.toString()) {
        fs.writeFileSync(filename, replaced)
        console.log("fixed imports at "+filename )
    }
}

//------------------------
//---BUILD TASK START 
//------------------------

execSync("npx tsc --build -verbose", { stdio: 'inherit' })

//add .js to generated imports so tsconfig.json module:"ES2020" works with node
//see: https://github.com/microsoft/TypeScript/issues/16577
fromDir("./dist", /\.js$/, addDotJsToLocalImports)

https://github.com/microsoft/TypeScript/issues/16577#issuecomment -310426634 рдкрд░ рдЖрдзрд╛рд░рд┐рдд

рдХреНрдпрд╛ рдХреЛрдИ рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ 3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЬрдм рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛ рддрдм рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рдереЗ?

рдЧреИрд░-рдмрдВрдбрд▓рд░ рд╕рдорд╛рдзрд╛рди рд╡реЗрдм-рд╡рд┐рддрд░рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ .js рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдирд╛ рд╣реИред

рд╡рд╣ 100% рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдРрд╕реЗ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реА рд╣реИ рдЬреЛ рд╡реЗрдм рдФрд░ Node.js рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ JS рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдЕрдЧрд░ рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛, рддреЛ рд╡рд╣ --moduleResolution=web рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рджрд╛рдпрд░рд╛ рдпрд╣рд╛рдВ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреЛрд╕реНрдЯ-рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреА рдкрдбрд╝реАред

fix-ts-imports

#!/usr/bin/env sh

# Fixes JavaScript module imports generated by TypeScript without extension.
# Converts
# import {} from './module'
# into
# import {} from './module.js'
#
# EXAMPLE
# ./fix-ts-imports

ProjectDir="$(cd "$(dirname "$0")/.." && pwd)"

fix() {(
        local pkg="$1"
        shift

        find "$pkg" -type f -iname '*.js' -not -ipath '*/node_modules/*' -print0 \
        | while read -r -d '' file; do
                sed -i '' -E 's|(import .+ from ['\''"]\.?\./.+[^.][^j][^s])(['\''"])|\1.js\2|g' "$file"
        done
)}

if test $# -eq 0; then
        set -- "$ProjectDir"
fi

for pkg; do
        fix "$pkg"
done

рдореЗрд░реЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдорд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:
https://github.com/yoursunny/NDNts/blob/743644226fe18d48e599181e87ad571a2708a773/mk/build-post.js

рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

tsc -b mk/tsconfig-solution.json -w --listEmittedFiles \
  | node mk/build-post.js

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

рд╕реНрд░реЛрдд рдореЗрдВ рдЖрдзреБрдирд┐рдХ рдЯреВрд▓рд┐рдВрдЧ рдФрд░ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдиреЛрдб рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЙрддреНрдХреГрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

  • рдЯрд╛рдЗрдкрдкреНрд░рддрд┐
  • рдИрдПрд╕ рдореЙрдбреНрдпреВрд▓
  • рдЬрдордирд╛

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

- рд╢рд╛рдпрдж рд╡реЗрдмрдкреИрдХ рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИ ...

рдФрд░ рдЗрд╕рд▓рд┐рдП - рдмрд┐рд▓реНрд▓реА рдмреИрдЧ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред

рд╕реНрд░реЛрдд рдореЗрдВ рдЖрдзреБрдирд┐рдХ рдЯреВрд▓рд┐рдВрдЧ рдФрд░ .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдиреЛрдб рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЙрддреНрдХреГрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

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

рдзрдиреНрдпрд╡рд╛рдж @ рдЪреЗрд╕-рдореЛрд╕реНрдХрд▓ред

рдореИрдВрдиреЗ рд░реЗрдкреЛ рдФрд░ tsconfig рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛, рдФрд░ рдЕрдм
import {something} from './something.js'
рдлреЗрдВрдХрддрд╛ рдирд╣реАрдВ
typescript force overwrite error TS5055: Cannot write file because it would overwrite input file
рдЕрдм рдФрд░, рдФрд░ рдореБрдЭреЗ рдЕрдм fix-ts-imports рд╣реИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

250+ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рдмрд╣реБрдд рдХрдо рд╕реНрдкрд╖реНрдЯрддрд╛ рдЖрдИ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:

рдкреГрд╖реНрдарднреВрдорд┐

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЙрдбреНрдпреВрд▓

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдмрдВрдзрд┐рдд URL рд╕рд╣рд┐рдд, URL рдХреЗ рдЕрдиреБрд╕рд╛рд░ EcmaScript рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВред ( рд╡реНрд╣рд╛рдЯрдбрдмреНрд▓реНрдпреВрдЬреА )

Node.js рдореЙрдбреНрдпреВрд▓

Node.js рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбреНрдпреВрд▓ (EcmaScript рдФрд░ Node.js-рд╡рд┐рд╢рд┐рд╖реНрдЯ CommonJS рджреЛрдиреЛрдВ) рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдлрд╝реЙрд▓рдмреИрдХ рдФрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ package.json рдлрд╝рд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред ( Node.js ) рдЬрд┐рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП --experimental-specifier-resolution=explicit рдХреЗ рд╕рд╛рде рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓

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

рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ Node.js рд╡рд╛рддрд╛рд╡рд░рдг рдпрд╛ рд╕рдВрдЧрдд рдмрдВрдбрд▓рд░ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдиреБрд░реЛрдз рдмрд┐рдирд╛ рдмрдВрдбрд▓рд░ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред

рдЯреАрдПрд╕-рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓реНрдк

рдЬрд╛рд╣рд┐рд░ рд╣реИ, ts-рдиреЛрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ, рдХреНрдпреЛрдВрдХрд┐ Node.js рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЛрдиреЛрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ ts-node рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдЙрди рдХрд╛ рд╕рдорд╛рдореЗрд▓рди рд╣реИред

рддрдереНрдпреЛрдВ

рддрдереНрдп 1: рдЖрдк .js рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

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

рддрдереНрдп 2: рдпрд╣ "рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝реЗрдВ" рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ

рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ "рдореЙрдбреНрдпреВрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдкрде рдореЗрдВ рдмрджрд▓рдиреЗ" рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдВрдХреНрд╖реЗрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреИрд╕реЗ ./example рдмрди рдЬрд╛рддрд╛ рд╣реИ ./example/index.js рдФрд░ 'lodash' рдмрди рдЬрд╛рддрд╛ рд╣реИ '.node_modules/lodash/index.js' ред

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

declare module "lodash" {
}

рд╢рд╛рдпрдж рдореЙрдбреНрдпреВрд▓ рдкреБрдирд░реНрд▓реЗрдЦрди рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛/рд╕рдВрдХрд▓рди рдореЗрдВ рдЯреАрдПрд╕ рдореЙрдбреНрдпреВрд▓ рддрдХ рд╣реА рд╕реАрдорд┐рдд рд╣реИред

рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЕрдм рд╣рдо TS рдХреЗ рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХрд┐ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рд╡рд░реНрддрдорд╛рди рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

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

рд╡реЗрдм рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред (рдЙрджрд╛рд╣рд░рдг рдХреЗ ./foo/index.js рдХреЗ рдмрдЬрд╛рдп ./foo ред)

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

@pauldraper "рддрдереНрдп 2" рдХреЗ рд╕рд╛рде рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛ рд╣реИ:

рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ "рдореЙрдбреНрдпреВрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдкрде рдореЗрдВ рдмрджрд▓рдиреЗ" рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдВрдХреНрд╖реЗрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреИрд╕реЗ ./example ./example/index.js рдмрди рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 'lodash' 'node_modules/lodash/index.js' рдмрди рдЬрд╛рддрд╛ рд╣реИред

рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рд╣рд░ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХреЛрдВ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдкреИрдХреЗрдЬ рдХрд╣реАрдВ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ рддреЛ рдпреЗ рдкрде рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ рдиреЛрдб рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ рд╣рдо import {} from './node_modules/lodash/index.js' рд▓рд┐рдЦ рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рдереЗ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред

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

рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ "рдореЙрдбреНрдпреВрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдкрде рдореЗрдВ рдмрджрд▓рдиреЗ" рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдВрдХреНрд╖реЗрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреИрд╕реЗ ./example рдмрди рдЬрд╛рддрд╛ рд╣реИ ./example/index.js рдФрд░ 'lodash' рдмрди рдЬрд╛рддрд╛ рд╣реИ '.node_modules/lodash/index.js'ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрднреА-рдХрднреА рдХреЛрдИ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдлрд╝рд╛рдЗрд▓ рдкрде рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдкрд░рд┐рд╡реЗрд╢ рдореЙрдбреНрдпреВрд▓ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рдеред

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреБрд░реЛрдз рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдпрд╣ рдХреЛрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИрдХреА рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдк рдХреЗ рдмрд┐рдирд╛ рдЯрд╛рдЗрдк: "рдореЙрдбреНрдпреВрд▓" рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЙрд╢ рдЬреИрд╕реЗ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ .js рдХреЗ рдмрд┐рдирд╛ рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпреЗ CommonJs рд╣реИрдВред

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

// ./src/moduleA.ts
export const test = 2;
// ./src/moduleB.ts
import {test} from './moduleA'



md5-ec0300a1c6d92a03c70699d0e52c0072



```js
// ./lib/moduleB.js
import {test} from './moduleA.js'

рдЙрдкрд░реЛрдХреНрдд рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ package.json "рдирд┐рд░реНрдпрд╛рдд" рдФрд░ "рдкреНрд░рдХрд╛рд░" рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рдЪреНрдЪреЗ рдИрдПрд╕рдПрдо рдХреА рдУрд░ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдЕрдиреБрд░реЛрдз рдмрд┐рдирд╛ рдмрдВрдбрд▓рд░ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред

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

рд▓реЙрд╢ рдЬреИрд╕реЗ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ .js рдХреЗ рдмрд┐рдирд╛ рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпреЗ CommonJs рд╣реИрдВред

рдЬрдм рддрдХ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВред

рдЬрдм рдЙрддреНрд╕рд░реНрдЬрд┐рддред

рдпрд╣ ./moduleA.js рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдпрд╣ ./moduleA/index.js рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣реИ рдирд╛? Node.js рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрдИ рд░рд╛рд╕реНрддреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЬрдм рддрдХ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдпреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ? Node.js рдХреЛ рдХреЙрдордирдЬреЗрдПрд╕ рд╕реЗ рдирд╛рдорд┐рдд рдирд┐рд░реНрдпрд╛рдд рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА-рдЕрднреА рд╕рдорд░реНрдерди рдорд┐рд▓рд╛ рд╣реИред
https://nodejs.org/api/esm.html#esm_import_statements

рдпрд╣ ./moduleA.js рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдпрд╣ ./moduleA/index.js рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣реИ рдирд╛? Node.js рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрдИ рд░рд╛рд╕реНрддреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдИрдПрд╕рдПрдо рдореЛрдб рдореЗрдВ рдирд╣реАрдВред index.js рдЕрдм рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреА рд╣реИред ESM рд▓реЛрдбрд░ package.json рдореЗрдЯрд╛рдбреЗрдЯрд╛ "рдирд┐рд░реНрдпрд╛рдд" рдФрд░ "рдкреНрд░рдХрд╛рд░" рдкрдврд╝реЗрдЧрд╛ред
https://nodejs.org/api/esm.html#esm_mandatory_file_extensions

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ + рдиреЛрдб.рдЬреЗрдПрд╕ рдЖрдзрд╛рд░рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдмреЗрд╣рддрд░ рджреЗрд╢реА рдИрдПрд╕рдПрдо рдХрд╣рд╛рдиреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЯреВрд▓рд┐рдВрдЧ (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдпрд╛ рдиреЛрдб.рдЬреЗрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рдкрд░ рдЖрдо рд╕рд╣рдорддрд┐ рдХреА рдХрдореА рд╣реИред

рдиреЛрдб рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛рдП рдЧрдП рд▓рд┐рдВрдХ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рднреНрд░рд╛рдордХ рдерд╛ред

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

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

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

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

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

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

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