<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Добавляем TypeScript в проект]]></title><description><![CDATA[<p dir="auto">Предположим мы добавить к текущему или новому проекту на <code>JS</code> строгую типизацию.<br />
Для этого выполним команду и установим его с флагом <code>--save-dev</code> (для компиляции <code>TypeScript</code> в <code>JS</code>) :</p>
<pre><code>npm install --save-dev typescript
</code></pre>
<p dir="auto">Работу самого компилятора <strong>TypeScript</strong> можно настроить, для этого нам потребуется конфигурационный файл с настройками.<br />
В этом нам поможет утилита <code>tsc</code>:</p>
<pre><code>./node_modules/.bin/tsc --init
</code></pre>
<p dir="auto">После выполнения команды в корне проекта должен появиться файл <code>tsconfig.json</code>:</p>
<p dir="auto"><img src="/assets/uploads/files/1756301908749-%D1%81%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-2025-08-27-%D0%B2-16.38.19.png" alt="Снимок экрана 2025-08-27 в 16.38.19.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Расширения файлов следующее <code>.ts</code>.</p>
<hr />
<p dir="auto">Далее я предоставлю структуру простого проекта. Все файлы исходного кода находятся в папке <code>src</code> и написаны на <strong>TypeScript</strong>.</p>
<p dir="auto">Файлы сборки находиться в папке <code>dist</code>.</p>
<pre><code>Проект
  |--dist
  |   |--index.js
  |   |--index.html
  |   |--user
  |   |   |--name.js
  |   |   |--photo.jpg
  |--src
  |   |--index.ts
  |   |--index.html
  |   |--user
  |   |   |--name.ts
  |   |   |--photo.jpg
  |--package.json 
</code></pre>
<p dir="auto">Обратим теперь свое внимание на файл <code>package.json</code>, разберем нюанс.</p>
<p dir="auto">Внутри есть параметр <code>main</code> — это точка входа нашего приложения. Если мы используем <strong>TypeScript</strong>, то в этом параметре требуется указать путь к скомпилированному файлу.</p>
<p dir="auto">Пример конфигурации:</p>
<pre><code class="language-json">{
  "name": "my-project",
  "version": "1.0.0",
  "main": "dist/index.js",  // путь к скомпилированному файлу
  "scripts": {
    "build": "tsc",         // команда для компиляции TypeScript
    "start": "node dist/index.js"
  },
  "devDependencies": {
    "typescript": "^5.9.2"
  }
}
</code></pre>
<hr />
<h2>Запускаем TypeScript</h2>
<p dir="auto">Далее для запуска серверного <strong>TypeScript</strong> в режиме разработки может быть полезен инструмент <code>ts-node</code>. Этот пакет объединяет сборку через <code>tsc</code> и запуск с помощью Node.JS.</p>
<p dir="auto">Так можно миновать компиляцию проекта в <code>dist</code> и запустить его напрямую.</p>
<p dir="auto">Для запуска серверного <strong>TypeScript</strong> в режиме разработки можем использовать инструмент <code>ts-node</code>, данный пакет объединяет сборку через <code>tsc</code> и запускается при помощи node.js.</p>
<p dir="auto">Давайте установим <code>ts-node</code>:</p>
<pre><code>npm install --save-dev ts-node 
</code></pre>
<p dir="auto">Создадим для примера TypeScript файл - <code>script.ts</code>:</p>
<pre><code class="language-ts">// script.ts

const user: string = 'User';

console.log(user);
</code></pre>
<p dir="auto">Не забудем добавить команду для запуска в package.json:</p>
<pre><code class="language-json">{
  "scripts": {
    "start": "ts-node ./script.ts",
  },
} 
</code></pre>
<p dir="auto">Все готово, можно запускать!</p>
<pre><code class="language-bash">&gt; npm start
User
</code></pre>
<hr />
<p dir="auto">Для примера также приложу полный файл package.json:</p>
<pre><code class="language-json">{
  "scripts": {
    "start": "ts-node ./script.ts",
  },
  "devDependencies": {
    "ts-node": "^10.9.2",
    "typescript": "^5.9.2"
  }
}

</code></pre>
<p dir="auto">На этом все! Теперь мы можем использовать полноценно <strong>TypeScript</strong> в своих проектах.</p>
]]></description><link>https://forum.exlends.ru/topic/225/dobavlyaem-typescript-v-proekt</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 03:49:29 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/225.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 27 Aug 2025 13:57:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Добавляем TypeScript в проект on Thu, 28 Aug 2025 08:11:34 GMT]]></title><description><![CDATA[<p dir="auto">вот  тема:<br />
<a href="https://forum.exlends.com/topic/145/zapusk-typescript-v-node-js-bez-sborki-i-slozhnyh-konfigov/2" target="_blank" rel="noopener noreferrer">Запуск Typescript в Node js без сборки и сложных конфигов</a></p>
<p dir="auto">Вот сводная,  кратко объясняющая разные способы запуска</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Возможность</th>
<th>tsx</th>
<th>ts-node</th>
<th>node --experimental-strip-types</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Принцип работы</strong></td>
<td>Самостоятельный транспайлер (esbuild), запускает «как есть» без отдельного tsc.</td>
<td>Использует компилятор TypeScript (можно esbuild/swc), но требует зависимости <code>@swc/core</code> или <code>ttypescript</code> для скорости.</td>
<td>Встроенный «strip-only» проход: вырезает аннотации типов и подсасывает оставшийся JS.</td>
</tr>
<tr>
<td><strong>Поддержка ESM</strong></td>
<td>«из коробки» (<code>import</code>, <code>import.meta.url</code>, <code>package.json "type": "module"</code>).</td>
<td>Нужен флаг <code>--esm</code> или <code>"module": "ESNext"</code> в tsconfig + <code>"type": "module"</code> в package.json.</td>
<td>Полностью нативный ESM – работает ровно как обычный Node.</td>
</tr>
<tr>
<td><strong>Поддерживаемые версии Node.js</strong></td>
<td>16.17+ (LTS).</td>
<td>14+, но быстрый SWC-путь только с 18+.</td>
<td>22.3+ (экспериментальный флаг).</td>
</tr>
<tr>
<td><strong>source-maps / отладка</strong></td>
<td>Генерирует встроенные source maps, работает с --inspect.</td>
<td>Генерирует source maps, но иногда требует доп. настроек.</td>
<td>Source maps не выдаёт – отладка только по «обрезанному» JS.</td>
</tr>
<tr>
<td><strong>Тип-чекинг</strong></td>
<td>Нет (только транспайл).</td>
<td>Да, если не отключить <code>transpileOnly</code>.</td>
<td>Нет (только strip).</td>
</tr>
<tr>
<td><strong>Итог</strong></td>
<td>Самый быстрый «1-командный» способ запуска TS без компиляции.</td>
<td>Универсальный, но чуть сложнее в настройке и медленнее.</td>
<td>Почти «zero-deps», но пока экспериментален и без диагностики типов.</td>
</tr>
</tbody>
</table>
<p dir="auto">Особенно важно обратить внимание на  ES модули, т.к они обычно встречаются в любом  не <em>helloworld</em> коде, и tsx их нормально жует без доп. настроек. Еще важно, что <code>node --experimental-strip-types</code> пока  не полностью  поддерживает весь синтаксис ts, например <code>enum</code></p>
]]></description><link>https://forum.exlends.ru/post/407</link><guid isPermaLink="true">https://forum.exlends.ru/post/407</guid><dc:creator><![CDATA[Aladdin]]></dc:creator><pubDate>Thu, 28 Aug 2025 08:11:34 GMT</pubDate></item><item><title><![CDATA[Reply to Добавляем TypeScript в проект on Thu, 28 Aug 2025 07:41:31 GMT]]></title><description><![CDATA[<p dir="auto">Про компиляцию написал в <a href="https://forum.exlends.com/topic/226/kompilyaciya-typescript-cherez-tsc" target="_blank" rel="noopener noreferrer">этой теме</a>.</p>
]]></description><link>https://forum.exlends.ru/post/406</link><guid isPermaLink="true">https://forum.exlends.ru/post/406</guid><dc:creator><![CDATA[kirilljsx]]></dc:creator><pubDate>Thu, 28 Aug 2025 07:41:31 GMT</pubDate></item><item><title><![CDATA[Reply to Добавляем TypeScript в проект on Wed, 27 Aug 2025 15:31:40 GMT]]></title><description><![CDATA[<p dir="auto">через tsx удобнее всего запускать</p>
]]></description><link>https://forum.exlends.ru/post/404</link><guid isPermaLink="true">https://forum.exlends.ru/post/404</guid><dc:creator><![CDATA[Aladdin]]></dc:creator><pubDate>Wed, 27 Aug 2025 15:31:40 GMT</pubDate></item></channel></rss>