проблемы с === в машинописи - PullRequest
0 голосов
/ 26 августа 2018

У меня есть блок if, как указано ниже:

if (this.totalTenants === 1) { this.newTenants.tenant2 = Object.assign({ name: null, number: null }, this.emptyTenant); this.newTenants.tenant3 = Object.assign({ name: null, number: null }, this.emptyTenant); this.newTenants.tenant4 = Object.assign({ name: null, number: null }, this.emptyTenant); this.newTenants.tenant2 = this.emptyTenant; this.newTenants.tenant3 = this.emptyTenant; this.newTenants.tenant4 = this.emptyTenant; this.newTenants.rentAmount = 3200; }

Но когда значение this.totalTenants равно 1, оно не входит в блок if.

Я работаю над Angular 6 с машинописью.

Если I if (this.totalTenants == 1) знак двойного равенства ==

тогда выполняется блок if, но я получаю ошибку, как показано ниже: [tslint] == ​​должно быть === (тройное равенство)

1 Ответ

0 голосов
/ 27 августа 2018

Разница между операторами == и === заключается в том, что первый выполняет автоматическое приведение для облегчения сравнения, а второй ничего не производит.

Таким образом, если вы попытаетесь сравнить два числовых значения, но одно из них будет строковым представлением числа, сравнение не удастся с оператором ===.

Возможно, вы используете строковое значение типа '1', чтобы проверить это, вы можете выполнить что-то вроде этого:

console.log(typeof this.totalTenants)

Если это приводит к появлению в строке, вы должны изменить свой оператор на == или привести это значение к числу, добавляющему переменную с + следующим образом:

if (+this.totalTenants === 1) {
...