0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В самом начале мне потребовалось правильно настроить окружение, ведь сам код, на самом деле, не сильно отличается от его версии на JavaScript.</p>
1
<p>В самом начале мне потребовалось правильно настроить окружение, ведь сам код, на самом деле, не сильно отличается от его версии на JavaScript.</p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>Устанавливаю TypeScript</a></li>
3
<ul><li><a>Устанавливаю TypeScript</a></li>
4
<li><a>Настраиваю ESLint и Prettier</a></li>
4
<li><a>Настраиваю ESLint и Prettier</a></li>
5
<li><a>Немного отредактировал Makefile</a></li>
5
<li><a>Немного отредактировал Makefile</a></li>
6
<li><a>Теперь я смог приступить к самому интересному, коду</a></li>
6
<li><a>Теперь я смог приступить к самому интересному, коду</a></li>
7
<li><a>Завершаю проект</a></li>
7
<li><a>Завершаю проект</a></li>
8
</ul><h2>Устанавливаю TypeScript</h2>
8
</ul><h2>Устанавливаю TypeScript</h2>
9
<p>Сперва я установил TypeScript и необходимые модули:</p>
9
<p>Сперва я установил TypeScript и необходимые модули:</p>
10
<p>npm install typescript --save-dev npm install @types/node --save-dev</p>
10
<p>npm install typescript --save-dev npm install @types/node --save-dev</p>
11
<p>@types/node требуется для подключения readline-sync через require.</p>
11
<p>@types/node требуется для подключения readline-sync через require.</p>
12
<h2>Настраиваю ESLint и Prettier</h2>
12
<h2>Настраиваю ESLint и Prettier</h2>
13
<p><em>Зачем нужен Prettier? Всё просто, он делает код более красивым (например, может разбить слишком длинную строку).</em></p>
13
<p><em>Зачем нужен Prettier? Всё просто, он делает код более красивым (например, может разбить слишком длинную строку).</em></p>
14
<p>npx eslint --init</p>
14
<p>npx eslint --init</p>
15
<p>Здесь выбирал всё то же, что и в первом проекте, но в вопросе про TypeScript нажимал на<em><strong>yes</strong></em>.</p>
15
<p>Здесь выбирал всё то же, что и в первом проекте, но в вопросе про TypeScript нажимал на<em><strong>yes</strong></em>.</p>
16
<p>Про установку и настройку Prettier вы можете посмотреть на их<a>официальном сайте</a>, тут я лишь покажу итоговые настройки.</p>
16
<p>Про установку и настройку Prettier вы можете посмотреть на их<a>официальном сайте</a>, тут я лишь покажу итоговые настройки.</p>
17
<p>.eslintrc.yml</p>
17
<p>.eslintrc.yml</p>
18
<p>extends: - plugin:@typescript-eslint/recommended - plugin:import/errors - plugin:import/warnings - plugin:import/typescript - airbnb-base - plugin:prettier/recommended - prettier plugins: - '@typescript-eslint' - 'prettier'</p>
18
<p>extends: - plugin:@typescript-eslint/recommended - plugin:import/errors - plugin:import/warnings - plugin:import/typescript - airbnb-base - plugin:prettier/recommended - prettier plugins: - '@typescript-eslint' - 'prettier'</p>
19
<p>package.json</p>
19
<p>package.json</p>
20
<p>"devDependencies": { "@types/node": "^16.10.3", "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", "eslint": "^7.32.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "^2.24.2", "eslint-plugin-prettier": "^4.0.0", "prettier": "^2.4.1", "readline-sync": "^1.4.10", "typescript": "^4.4.3" }</p>
20
<p>"devDependencies": { "@types/node": "^16.10.3", "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", "eslint": "^7.32.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "^2.24.2", "eslint-plugin-prettier": "^4.0.0", "prettier": "^2.4.1", "readline-sync": "^1.4.10", "typescript": "^4.4.3" }</p>
21
<h2>Немного отредактировал Makefile</h2>
21
<h2>Немного отредактировал Makefile</h2>
22
<p>Запуск линтера осуществляю следующим образом:</p>
22
<p>Запуск линтера осуществляю следующим образом:</p>
23
<p>npx eslint **/*.ts</p>
23
<p>npx eslint **/*.ts</p>
24
<p>Так линтер будет проверять только TypeScript файлы.</p>
24
<p>Так линтер будет проверять только TypeScript файлы.</p>
25
<h2>Теперь я смог приступить к самому интересному, коду</h2>
25
<h2>Теперь я смог приступить к самому интересному, коду</h2>
26
<p>Создал копии своих .js файлов в разрешении .ts и скопировал туда весь код.</p>
26
<p>Создал копии своих .js файлов в разрешении .ts и скопировал туда весь код.</p>
27
<p>Единственное отличие - импорт readline-sync, он теперь осуществляется следующим образом:</p>
27
<p>Единственное отличие - импорт readline-sync, он теперь осуществляется следующим образом:</p>
28
<p>import readlineSync = require("readline-sync");</p>
28
<p>import readlineSync = require("readline-sync");</p>
29
<p>Дальше я запускаю проверку линтером и исправляю всё на что тот ругается.</p>
29
<p>Дальше я запускаю проверку линтером и исправляю всё на что тот ругается.</p>
30
<h2>Завершаю проект</h2>
30
<h2>Завершаю проект</h2>
31
<p>Когда я закончил исправлять все ошибки и ESLint вернулся со статусом<em>"0"</em>, приступил к компиляции TypeScript кода в JavaScript. Делается это при помощи запуска компилятора командой tsc.</p>
31
<p>Когда я закончил исправлять все ошибки и ESLint вернулся со статусом<em>"0"</em>, приступил к компиляции TypeScript кода в JavaScript. Делается это при помощи запуска компилятора командой tsc.</p>
32
<p>После этого проверил работоспособность проекта и выложил свой код :)</p>
32
<p>После этого проверил работоспособность проекта и выложил свой код :)</p>
33
<p>Если вам интересно что у меня в итоге получилось, то добро пожаловать на мой<a>GitHub</a>.</p>
33
<p>Если вам интересно что у меня в итоге получилось, то добро пожаловать на мой<a>GitHub</a>.</p>
34
<p>К сожалению я никак не использовал интерфейсы и другие классные TypeScript штуки, но у меня уже есть идеи как это исправить и что можно будет добавить в проект. Думаю потом я напишу об этом.</p>
34
<p>К сожалению я никак не использовал интерфейсы и другие классные TypeScript штуки, но у меня уже есть идеи как это исправить и что можно будет добавить в проект. Думаю потом я напишу об этом.</p>
35
<p>А на этом у меня всё, спасибо за внимание!</p>
35
<p>А на этом у меня всё, спасибо за внимание!</p>