#typescript #tsconfig #compiler-options
#typescript
Вопрос:
Я хочу отключить возможность использования «any» в typescript. Например, у меня есть следующая функция
func() {
return true
}
я хочу потребовать, чтобы это было так
func(): boolean {
return true
}
Я знаю, что TSLint может проверить это, но я могу проигнорировать это и все равно скомпилировать. Есть ли необходимость в этом для компиляции в файле TSConfig?
Комментарии:
1. Вы пробовали настройку
"noImplicitAny": true
?2. На самом деле, ни один из этих примеров кода не использует
any
тип. Возвращаемый типboolean
в обоих случаях.3. Является ли tslint опцией? У вас нет никакого варианта. В качестве альтернативы, tsconfig of
no-implict-any
работает достаточно хорошо для большинства случаев, в то же время позволяя явное приведение к любому.4. Звучит как проблема XY. mywiki. wooledge.org/XyProblem
5. «Я могу проигнорировать это и все равно скомпилировать» — это то, как TypeScript имеет тенденцию работать в любом случае, если вы не включите параметр
--noEmitOnError
конфигурации. Возможно, вам следует настроить свою систему сборки так, чтобы в случае сбоя tslint вы не создавали выходные файлы.
Ответ №1:
Нет, типы возвращаемых функций выводятся в typescript. Сам компилятор не имеет настройки для отключения вывода типов в функциях. Эта функция была запрошена и отклонена, как обсуждалось в этом выпуске, размещенном в репозитории typescript .
Однако ваш любимый инструмент lint может предупредить вас, когда для функции не указано определение типа. Для полноты я предоставлю эту информацию.
tslint
Правило называется typedef . Добавьте следующую строку в конфигурацию tslint
"typedef": [ true, "call-signature", "arrow-call-signature" ]
eslint
В плагине typescript-eslint это правило называется explicit-function-return-type . (Я не могу предоставить инструкции по настройке, поскольку я не использую eslint. Любой желающий может отредактировать его в)
Комментарии:
1. Примечание:
tslint
теперь устарел,typescript-eslint
должен использоваться вместо