πŸ”§ TypeScript Π² дСталях: настраиваСм tsconfig.json ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ

Один Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство ΠΏΠΎ tsconfig.json. Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ Π΅Π³ΠΎ влияниС Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, сборку ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ TypeScript-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» взят ΠΈΠ· нашСй СТСнСдСльной email-рассылки, посвящСнной Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Ρƒ. ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² числС ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ дайдТСст.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ tsconfig.json?

Π€Π°ΠΉΠ» tsconfig.json Π² TypeScript – это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для управлСния ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ вашСго ΠΊΠΎΠ΄Π°, обСспСчСния Π΅Π³ΠΎ бСзопасности ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ взаимодСйствия с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ систСмами. Он опрСдСляСт:

  • ПовСдСниС компилятора TypeScript:
    Как ΠΊΠΎΠ΄ прСобразуСтся Π² JavaScript
    ΠšΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ JavaScript ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅
    КакиС Ρ„Π°ΠΉΠ»Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ/ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠ· компиляции
  • ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ²:
    Насколько строгой Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ²
    Как ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ null ΠΈ undefined
    Π Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π»ΠΈ нСявныС any Ρ‚ΠΈΠΏΡ‹
  • Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:
    Π“Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ исходныС Ρ„Π°ΠΉΠ»Ρ‹
    ΠšΡƒΠ΄Π° ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ скомпилированныС Ρ„Π°ΠΉΠ»Ρ‹
    Как Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с модулями ΠΈ путями ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
  • Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ:
    Π‘ ΠΊΠ°ΠΊΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ΄
    КакиС возмоТности JavaScript доступны
    Как Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с JavaScript ΠΊΠΎΠ΄ΠΎΠΌ

Π’Π°ΠΊ выглядят Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ настройки tsconfig.json, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ сборки, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ:

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ эти настройки ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ TypeScript

ΠžΠΏΡ†ΠΈΡ "incremental": true идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Π±Π°Π· ΠΈΠ»ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π³Π΄Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ сборками измСняСтся лишь Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. Когда эта опция Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, TypeScript ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ сборку, позволяя ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ измСнились, Ρ‚Π΅ΠΌ самым экономя врСмя.

Полная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ²

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ "strict": true Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π² TypeScript, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для Ρ€Π°Π½Π½Π΅Π³ΠΎ выявлСния ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ошибок ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… случаСв. Π­Ρ‚ΠΎΡ‚ Π²ΡΠ΅ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π°ΠΆΠ½Ρ‹Ρ… настроСк:

  • noImplicitAny – Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ автоматичСски ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ any. Π­Ρ‚Π° настройка Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ вас явно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚ΠΈΠΏΡ‹, сниТая риск Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ³ΠΎ повСдСния.
  • strictNullChecks – Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ значСния null ΠΈ undefined Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, дСлая ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ прСдсказуСмым Π·Π° счСт прСдотвращСния случайных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ пустыми значСниями.
  • strictFunctionTypes – Π²Π²ΠΎΠ΄ΠΈΡ‚ строгиС ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ обСспСчСнии совмСстимости Π² Ρ€Π°Π·Π½Ρ‹Ρ… областях видимости.
  • strictBindCallApply – добавляСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ² для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² bind, call ΠΈ apply, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΈΠΏΠ°ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • strictPropertyInitialization – обСспСчиваСт ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ свойств класса ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… использованиСм, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ установки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² конструкторС, прСдотвращая ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ошибки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния.
  • noImplicitThis – Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ any, трСбуя явной Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ способствуя бСзопасному использованию this.
  • alwaysStrict – убСТдаСтся, Ρ‡Ρ‚ΠΎ всС Ρ„Π°ΠΉΠ»Ρ‹ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² строгом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ECMAScript ("use strict" добавляСтся ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ), Ρ‡Ρ‚ΠΎ позволяСт Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ большС ошибок Π²ΠΎ врСмя выполнСния.
  • useUnknownInCatchVariables – измСняСт Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ошибки Π² Π±Π»ΠΎΠΊΠ°Ρ… catch с any Π½Π° unknown, ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΡƒΡŽ ΡΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠ° ошибки.
  • noUncheckedIndexedAccess: true – обСспСчиваСт Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈ динамичСском доступС ΠΊ свойствам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ сборки

  • rootDir: "src" – ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ исходных Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ порядок Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, логичСски организовывая Ρ„Π°ΠΉΠ»Ρ‹, ΠΈ Π΄Π°Π΅Ρ‚ компилятору Π·Π½Π°Ρ‚ΡŒ, Π³Π΄Π΅ находятся исходныС Ρ„Π°ΠΉΠ»Ρ‹.
  • outDir: "./build" – дирСктория, ΠΊΡƒΠ΄Π° TypeScript Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ скомпилированныС Ρ„Π°ΠΉΠ»Ρ‹. ΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ исходныС Ρ„Π°ΠΉΠ»Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, находящиСся Π² ΠΏΠ°ΠΏΠΊΠ΅ src/) ΠΎΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ JavaScript-ΠΊΠΎΠ΄Π°.

ΠšΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Π°Ρ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ

  • target: "es6" – устанавливаСт Π²Π΅Ρ€ΡΠΈΡŽ ECMAScript для Π²Ρ‹Π²ΠΎΠ΄Π°. Установка target Π½Π° es6 часто ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π° для соврСмСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эта вСрсия ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ async/await, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript. ΠŸΡ€ΠΈ этом ΠΊΠΎΠ΄, скомпилированный Π΄ΠΎ ES6, остаСтся совмСстимым с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΈ срСд Node.js.
  • module: "NodeNext" – опрСдСляСт систСму ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ: CommonJS, ESNext ΠΈΠ»ΠΈ NodeNext. ИспользованиС NodeNext позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с модулями ES (ECMAScript Modules) вмСстС с TypeScript. Π­Ρ‚ΠΎ особСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ модулями Node.js Π² новСйшСм Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ окруТСния, стоит Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ использованиС commonjs ΠΈΠ»ΠΈ esnext Π² зависимости ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.

ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ тСстированиС

  • sourceMap: true – Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°Ρ€Ρ‚Ρ‹ исходников для ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π² ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅. ΠšΠ°Ρ€Ρ‚Ρ‹ исходников ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ ваш ΠΊΠΎΠ΄ Π½Π° TypeScript с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ JavaScript, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² VS Code ΠΈ Chrome DevTools Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅. Π‘Π΅Π· ΠΊΠ°Ρ€Ρ‚ исходников ΠΎΡ‚Π»Π°Π΄ΠΊΠ° становится Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ошибки Π±ΡƒΠ΄ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° сгСнСрированный JavaScript-ΠΊΠΎΠ΄, Π° Π½Π΅ Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ TypeScript.
  • skipLibCheck: true – пропускаСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ² для сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, установка skipLibCheck Π² true ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ². Π­Ρ‚ΠΎ ускоряСт процСсс сборки Π±Π΅Π· ΡƒΡ‰Π΅Ρ€Π±Π° для бСзопасности вашСго ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΡƒΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ протСстированы.

ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ качСства ΠΊΠΎΠ΄Π°

  • noUnusedParameters ΠΈ noUnusedLocals: false – ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. РСкомСндуСтся Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ эти настройки для поддСрТания чистоты ΠΊΠΎΠ΄Π°, хотя ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… Π²ΠΎ врСмя Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.
  • noImplicitOverride: true – обСспСчиваСт явноС использованиС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова override ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² супСрклассов. Π‘ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ noImplicitOverride Π»ΡŽΠ±Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово override. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΊΠΎΠ΄Π°, особСнно Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ….

Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ JSON

  • esModuleInterop: true – Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ CommonJS. Π’ TypeScript Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ модулями ES ΠΈ CommonJS. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ esModuleInterop ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.
  • resolveJsonModule: true – позволяСт ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ JSON-Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ JSON-Ρ„Π°ΠΉΠ»ΠΎΠ² часто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ использования тСстовых Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΊΠ»ΡŽΡ‡ΠΈΠ² resolveJsonModule, Π²Ρ‹ смоТСтС Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ JSON, ΠΈ TypeScript автоматичСски Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ Π΅ΠΌΡƒ Ρ‚ΠΈΠΏ any.

Π§ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊ рСгистру ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…

forceConsistentCasingInFileNames: true Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ соблюдСниС Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊ рСгистру Π² путях ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, прСдотвращая появлСниС скрытых ошибок ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ, особСнно ΠΌΠ΅ΠΆΠ΄Ρƒ Unix ΠΈ Windows.

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ нСдостиТимого ΠΊΠΎΠ΄Π° ΠΈ проваливания

  • allowUnreachableCode: false – Π²Ρ‹Π΄Π°Π΅Ρ‚ ошибки ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ нСдостиТимого ΠΊΠΎΠ΄Π°.
  • noFallthroughCasesInSwitch: true – ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… switch, заставляя Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли ΠΎΠ΄Π½Π° Π²Π΅Ρ‚Π²ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π±Π΅Π· явного использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² break, return ΠΈΠ»ΠΈ throw.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС ΠΎΠΏΡ†ΠΈΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ tsconfig.json позволяСт эффСктивно Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ TypeScript-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, обСспСчивая созданиС быстрых, Π»Π΅Π³ΠΊΠΈΡ… Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΈ бСзопасных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

***

КакиС настройки tsconfig.json Π²Ρ‹ считаСтС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ для любого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ? ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ!

***

πŸš€ Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Π²ΠΎΠΉΡ‚ΠΈ Π²ΠΎ frontend-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ

ΠšΡƒΡ€Ρ Frontend basic ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ программиста»:

  • 26 Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠΎΠ² ΠΎΡ‚ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π“Π°Π·ΠΏΡ€ΠΎΠΌΠ±Π°Π½ΠΊΠ° ΠΈ Аэрофлота
  • ΠžΡ‚ основ HTML/CSS Π΄ΠΎ создания ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π½Π° React

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности:

  • БСссрочный доступ ΠΊ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌ
  • ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…
  • Код Ρ€Π΅Π²ΡŒΡŽ всСх Π·Π°Π΄Π°Π½ΠΈΠΉ
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΠΉ

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
06 фСвраля 2017

15 прСкрасных ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для Sublime Text

ВстрСчайтС список ΠΏΠ΅Ρ€Π²ΠΎΠΉ нСобходимости – 15 самых Π½ΡƒΠΆΠ½Ρ‹Ρ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для Subli...