Цлинт - тип тривиально выведен. - Почему эта плохая практика включает здесь тип?
В VSCode linter, tslint, жалуется, когда я добавляю следующий код, с типом:
serverId: number = 10;
И выдает следующее сообщение:
[tslint] Тип номер тривиально выводится из литерала числа, удаляет тип аннотации типа (не-выводимые типы)
Когда я удаляю тип "номер", сообщение исчезает.
Почему эта плохая практика включает сюда информацию о типе?
Ответы
Ответ 1
Это не плохая практика, но serverId: number = 10
является избыточным, поскольку тип number
выводится, когда свойство назначено. Это то, что TSLint no-inferrable-types
предупреждает о:
Явные типы, которые могут быть легко выведены компилятором, делают код более подробным.
Если есть вероятность, что свойство serverId
может быть изначально undefined, но будет определено позже (например, в функции constructor
), number
можно безопасно пропустить.
Этот подход лучше всего работает с опцией noImplicitAny
, потому что таким образом нет никаких шансов, что тип будет опущен по ошибке, потому что он был" t выведено.
Ответ 2
Как было упомянуто выше, это технически избыточно и может рассматриваться как беспорядок. Лично меня не волнует это мнение, и я предпочитаю указывать как тип, так и значение по ряду конкретных незначительных причин рабочего процесса, и я не считаю, что это уровень беспорядка, требующий правила. Если вы хотите отключить его, вот как.
- открыть tslint.json
- найти атрибут "no-inferrable-types"
- добавить
ignore-properties
в его массив
соответствующие документы tslint https://palantir.github.io/tslint/rules/no-inferrable-types/
Ответ 3
Эта ошибка связана с вашей конфигурацией в файле tslint.json
.
Либо просто инициализируйте свою строку как:
serverId = 10;
или
serverId : number;
или просто настройте конфигурацию для no-inferrable-types
в файле tslint.json следующим образом:
no-inferrable-types : false
Ответ 4
Это не нужно, он не предоставляет никакой новой информации. Это в основном комментарий, говорящий, что "10 - это число".
Ответ 5
Это можно рассматривать как шум. Более важно ввести нетривиальные части
Ответ 6
Сейчас это может показаться странным, но я получаю похожую ошибку и не могу найти атрибут "no-inferrable-types" в файле tslint.json моего углового приложения. Я не знаю, почему это не сгенерировало, но мне пришлось вставить это сюда
"rules": {
**"no-inferrable-types": false,**
"directive-selector": [
true,
"attribute",
"app",
"camelCase"
],
И тогда это сработало как шарм!
PS Это для кого-то, кто может бродить с той же проблемой, что и я, или я могу ошибаться, потому что никто из решений не упомянул, что это должно быть добавлено с нашей стороны в файле json.