Цлинт - тип тривиально выведен. - Почему эта плохая практика включает здесь тип?

В 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.