Я начинаю мигрировать большую кодовую базу JS в TS.
Как рекомендовано в документе Миграция из JavaScript , я начал с установки tsconfig.json
файла на allowJs: true
.
Процедура миграции такова, что всякий раз, когда я добавляю новый файл в кодовую базу, я добавляю его в TS.
Поскольку я хочу быть как можно более строгим для этих новых файлов TS, я добавил различные параметры строгости в файл tsconfig.json
, такие как "noImplicitAny": true, "noImplicitThis": true
.
Дело в том,как только я это сделаю, я получаю массу ошибок для всех моих неперемещенных файлов JS, которые, конечно же, не имеют типизаций для различных аргументов и поэтому имеют неявный тип any
.
Что такое предлагаемый рабочий процессв таком состоянии?Как описано выше, я хочу:
- Будьте максимально строгими для новых создаваемых мной файлов TS.
- Выполните стандартные проверки TS для моих файлов JS, например,
unreached code
илиunused variables
. - Отсутствие такой же строгости TS в моих файлах JS, как это будет означать, что мне нужно перенести весь мой код в TS сразу, что на самом деле неосуществимо.
Возможно ли это как-то с разными tsconfig.json
файлами для файлов JS и TS?
Какова здесь лучшая практика?
Редактировать:
Как упоминал Мэтт в комментарии ниже, я действительно использовал флаг checkJs: true
, который вызвал ошибки компиляции в файлах JS.
Я понял, что даже не перенося ваши файлы JS на TS, вы получаетепроверка типа «из коробки», даже когда вы используете файлы .js, но у меня этого не происходит.
Без флага checkJs
я получаю Unreachable code detected
и 'x' is declared but is never used
предупреждения, но это, кажется, это так.По какой-то причине я был уверен, что он также поймает что-то вроде следующего:
let num = 12;
num = "aa";
Но он не отображает никаких предупреждений (и intellisense не «знает», что num
имеетвведите number
).
При повторном прочтении статьи Миграция с JavaScript (раздел «Ранние преимущества») я вижу, что на самом деле все, что я получаю, очень ограниченоподдержка проверки ввода.
Итак, последнее, прежде чем я закрою этот вопрос - это как-то настраивается или это все?