#typescript #ts-migrate
#typescript #ts-миграция
Вопрос:
На прошлой неделе я ts-migrate
перенес нашу кодовую базу на TypeScript. Инструмент добавляет много // @ts-expect-error
комментариев в TS-файлы, чтобы заставить их пройти проверку компилятора TS и проверку типов. Однако, когда я запускаю yarn run tsc
, чтобы ввести проверку моей кодовой базы, я получаю более 5 тысяч ошибок, в которых указано error TS2578: Unused '@ts-expect-error' directive.
, что я пропустил часть конфигурации, в которой указано, что эти типы ошибок допустимы? Ищу какие-либо советы, чтобы передать это компилятору TS.
Вот моя конфигурация TS для справки.
{
"compilerOptions": {
"target": "ES2016",
"module": "commonjs",
"lib": ["esnext", "dom"],
"allowJs": true,
"checkJs": false,
"jsx": "react",
"declaration": false,
"declarationMap": false,
"sourceMap": false,
"skipDefaultLibCheck": true,
"skipLibCheck": true,
"noEmit": true,
"isolatedModules": true,
"strict": false,
"noImplicitAny": false,
"strictNullChecks": false,
"strictFunctionTypes": false,
"strictBindCallApply": false,
"strictPropertyInitialization": false,
"noImplicitThis": false,
"alwaysStrict": false,
"noUnusedLocals": false,
"noUnusedParameters": false,
"noImplicitReturns": false,
"noFallthroughCasesInSwitch": false,
"baseUrl": "./",
"typeRoots": [
"./types/",
"./node_modules/@types"
],
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true
}
}
Полный пример сообщения об ошибке:
src/WorkspacePicker/__tests__/index.test.tsx:27:1 - error TS2578: Unused '@ts-expect-error' directive.
27 // @ts-expect-error ts-migrate(2582) FIXME: Cannot find name 'describe'. Do you need to instal... Remove this comment to see the full error message
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/WorkspacePicker/__tests__/index.test.tsx:29:3 - error TS2578: Unused '@ts-expect-error' directive.
29 // @ts-expect-error ts-migrate(2582) FIXME: Cannot find name 'test'. Do you need to install ty... Remove this comment to see the full error message
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/WorkspacePicker/__tests__/index.test.tsx:38:5 - error TS2578: Unused '@ts-expect-error' directive.
38 // @ts-expect-error ts-migrate(2304) FIXME: Cannot find name 'expect'.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ответ №1:
У меня была та же проблема, но моя ошибка также обнаружилась в этих нетестовых файлах. Я думаю, это связано с несоответствием версии typescript для ts-migrate
и вашей IDE. Я исправил это, добавив пакет typescript package.json
, чтобы сделать обе версии одинаковыми
Ответ №2:
У меня возникла та же проблема, пришлось перезапустить мою IDE (VS Code) после настройки конфигурации в tsconfig.json, а затем она приняла новые изменения.
Ответ №3:
Простой ответ. Вы использовали // @ts-expect-error
where нет ошибки. Я рекомендую заменить ее в VS Code с помощью регулярного s*//s*@ts-expect-error
выражения (ни на что), чтобы удалить все комментарии.
Комментарии:
1. Не уверен, что это так, потому что там есть сообщения об ошибках. Я обновлю вопрос примером.
2. Хорошо, я беру часть этого обратно. Тесты не нужно компилировать здесь, поэтому я понимаю, что вы говорите. Позвольте мне попробовать удалить все это из тестовых файлов.
3. Похоже, это правильно, но мне действительно нужны некоторые директивы @ts-expect-error. Хотелось бы, чтобы у VS Code был способ сообщить вам об этом и просто удалить их все, но я не думаю, что это возможно.