Возьмите следующую стрелочную функцию Typescript:
/**
* Returns a probably unique component name.
*
* @param baseName a suggested name to make unique.
* @returns a probably unique name.
*/
export const getUniqueComponentName = (
baseName
): string => {
return baseName + Math.round(Math.random() * 10000000)
}
Когда Typescript настроен в tsconfig.json
как таковой:
"noImplicitAny": true,
Это правильно приводит к ошибке компиляции:
[ts] Параметр baseName неявно имеет тип any.
Код Visual Studio также достаточно умен, чтобы сообщить вам об этой проблеме во время разработки.
Моя цель - создать хук precommit git, который предотвращает попадание таких ошибок в систему управления версиями. Я пытался сделать это с tslint
, husky
и lint-staged
, используя этот npm script
:
"lint": "tslint --project tsconfig.json --config tslint.json"
Однако это не приводит к тому, что tslint обнаруживает ошибку компиляции. Это молча игнорируется.
Затем я попытался добавить правило в tslint.json:
"typedef": [
true,
"arrow-parameter"
]
Хотя это действительно заставило tslint жаловаться, он также начал жаловаться на анонимные стрелочные функции, где компилятор tsc
не жалуется. В этих стрелочных функциях нет необходимости добавлять типы, потому что типы уже были установлены ранее в родительской области (они предполагаются).
В общем, я бы хотел, чтобы tslint в этом случае вел себя так же, как tsc. Каждый раз, когда возникает ошибка, которая может привести к сбою компиляции (например, указанная выше стрелочная функция), я хотел бы предотвратить фиксацию, но без фактической компиляции в Javascript. Это возможно?
tsc --noEmit
? По сути, это запуск статического анализатора без генерации JS. - person y2bd   schedule 19.07.2018lint-staged
запускатьtsc
только для зафиксированных файлов. Это возможно только в том случае, если вы не передаете флагp
, но тогда все параметры конфигурации игнорируются. Также вы не можете передать конфигурациюpaths
в качестве аргумента командной строки, поэтому отказ от использованияp
не является вариантом? - person Tom   schedule 19.07.2018