Почему должен быть выполнен TSlint после компиляции файлов Typescript? - PullRequest
0 голосов
/ 12 декабря 2018

Согласно официальному TSLint, TSLint должен выполняться только после компиляции кода Typescript.В чем причина этого?

Официальный документ TSLint: https://palantir.github.io/tslint/usage/cli/

1 Ответ

0 голосов
/ 13 декабря 2018

TSLint работает с разобранным AST (абстрактным синтаксическим деревом), полученным из TypeScript.Если AST, который он получает от TypeScript, имеет ошибки, логика его правил может сделать некоторые неверные предположения.

Определение нескольких из этих терминов:

  • AST: древовидное представление вашего кода, которое будет анализировать линтер.Вы можете поиграть с astexplorer.net , чтобы увидеть, как это выглядит;это довольно изящно!100
  • Синтаксические ошибки: если вы пишете такой код, как led foo = "bar"; (led вместо let) .TypeScript создаст другое представление вашего кода, чем вы могли бы ожидать.
  • Семантические ошибки: если вы пишете код, в котором нет синтаксических ошибок, но при проверке типов обнаруживаются проблемы, например let foo: number = "bar";.

В TSLint есть проблема, открывающая вопрос о том, не стоит ли проверять код с синтаксическими или семантическими ошибками: https://github.com/palantir/tslint/issues/3808

Два дополнительных замечания в пользу того, чтобы TSLint не запускался на недопустимых исходных файлах:

  • Многим людям трудно различить ошибки TS и TSLint, поэтому может возникнуть путаница, когда неправильный файл приводит к lot ошибок lint
  • Код TS, который не компилируется, имеет тенденцию иметь различные проблемы с линтированием после того, как он будет исправлен, поэтому немного напрасно просить людей исправить их вместе с ошибками TS
...