Я только начал изучать машинопись, и при переносе кода моего узла js-сервера в машинопись я столкнулся с несколькими проблемами (или вопросами).
Я не знаю почему, но когда я смотрю учебники по машинописи, большинство преподавателей используют пряжу вместо npm. это почему? Я только что узнал и знаю, что пряжа немного быстрее и имеет некоторые другие преимущества, но есть ли причина, почему приложения для машинописи лучше подходят для пряжи, чем для npm?
при написании машинописного приложения учителя устанавливают зависимости с префиксом @ types /, а также без префикса. Я думаю, тот, что с @types - это тот же модуль, написанный на машинописи. тогда почему они устанавливают оба? Разве недостаточно только машинописного текста?
не было бы хорошо просто использовать модуль не @types, так как JavaScript совместим с Typescript?
Я использую посылку для создания приложения для машинописи. И в модуле с именем engine.io (вероятно, установленным, потому что у меня есть socket.io в качестве зависимости), возникает ошибка сборки, говорящая, что он не может разрешить зависимость «uws».
D:\NodeApps-valC\ToolboxWars - Parcel\node_modules\engine.io\lib\server.js:107:35: Cannot resolve dependency 'uws'
105 | var wsModule;
106 | switch (this.wsEngine) {
> 107 | case 'uws': wsModule = require('uws'); break;
| ^
108 | case 'ws': wsModule = require('ws'); break;
109 | default: throw new Error('unknown wsEngine');
110 | }
Просто запуск с использованием узла index.js работает нормально. вероятно, потому что, когда скрипт выполняется, он на самом деле не проходит через строку, которая требует uws, но использует parcel. Я думаю, что компилятор ts пытается выяснить каждый модуль, который требуется оператором require (), даже если код никогда не выполняется. Я пишу об этом? Если так, что бы вы предложили. Я только что решил, добавив зависимость UWS, но это единственный способ?
Любая помощь будет очень благодарна.
Редактировать:
Что касается вопросов 2 и 3, то после прочтения кода файлов ts node_modules / @ types я выяснил, что это скорее определения пространств имен и типов, чтобы сделать модуль js совместимым с ts, а не с версией ts.