Как правильно сравнить поле типизированного объекта с примитивом в Typescript? - PullRequest
0 голосов
/ 28 марта 2019

Если у вас есть поле типизированного объекта и вы хотите сравнить его с примитивом, скажем, 1 или ABCD, как правильно это сделать?

Вот пример.

interface Model {
  __typename: "floors";
  value: number;
  formattedValue?: string;
}

Это сравнение дает мне ответ, который я ищу, но Цлинт говорит == should be ===.

if (model.value == 1) {
     return true;
}

Это не дает мне ответ, который я ищу. Он не возвращает true, хотя value равно 1.

if (model.value === 1) {
     return true;
}

Как я могу сделать это сравнение, не обидев tslint?

Единственный способ, которым я нашёл, это сделать:

if (Number(value) === 1) {
     return true;
}

... но создание числа просто для сравнения кажется неправильным.

1 Ответ

1 голос
/ 04 апреля 2019

В качестве альтернативы, скажите TSLint прекратить проверку на ==: https://palantir.github.io/tslint/usage/configuration/

// tslint.json
{
    "rules": {
        "triple-equals": false
    }
}

https://palantir.github.io/tslint/rules/triple-equals/

Комментарии к исходному сообщению находятся на месте.Хотя в TypeScript вы заявили, что свойства value всегда равны number s, кажется, что, откуда вы их берете, они передаются как string s.Должно быть выполнено одно из следующих действий:

  • То, что вы объявили как неверный набор текста;вместо этого вы должны сказать value: string
  • То, что вы объявили как набор текста, должно быть правильным, но что-то по ошибке дает вам string

TypeScript - это просто наборподсказки времени разработки.Это не имеет отношения к тому, что происходит во время выполнения.

...