Задать вопрос
@karpo518

Почему Typescript ругается на файлы js?

На проекте (React) идёт постепенная типизация кода и часто требуется подключение компонентов .js в новых компонентах .tsx. Но если подключить компонент .js в компоненте .tsx, то проект не собирается из-за ошибок TypeScript в js файлах. В итоге иногда чтобы создать новый компонент tsx в некоторых случаях приходится типизировать десятки js компонентов, которые нужны в этом компоненте.

Пробовал использовать @ts-ignore перед строкой импорта компонента js + перед строкой, в которой используется компонент, но это не помогает. Кроме того, TypeScript ругается не только на файлы js, которые используются в файлах tsx, но и на всё дерево дочерних компонентов подключаемого файла js. Как можно отключить это поведение?

tsconfig.js
const fs = require('fs');

const config = {
  compilerOptions: {
    target: 'es2019',
    jsx: 'react',
    module: 'ESNext',
    moduleResolution: 'bundler',
    allowJs: true,
    checkJs: false,
    experimentalDecorators: true,
    baseUrl: './',
    esModuleInterop: true,
    strictPropertyInitialization: false,
    strict: true,
    paths: {
      'site/*': ['*'],
      'root/*': ['*'],
      ...
    },
  },
  exclude: [
    'node_modules',
    '**/*.js'
  ]
};

fs.writeFileSync('tsconfig.json', JSON.stringify(config));
// eslint-disable-next-line no-console
console.log('TSCONFIG CREATED - DONE!\n');

  • Вопрос задан
  • 110 просмотров
Подписаться 1 Средний 3 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@eminsk
developer python, javascripts
TypeScript всё равно «подтягивает» .js-файлы, если они импортированы из .tsx, даже если они записаны в exclude; чтобы он не валил сборку из‑за их ошибок, нужно либо отключить проверку этих JS‑файлов (например, через @ts-nocheck в самих .js), либо перестать добавлять их в программу TS (убрать allowJs и дать .d.ts‑заглушки), либо разделить конфигурацию на несколько tsconfig для поэтапной миграции.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽