Оператор '>' нельзя применять к типам 'void' и 'number' в Angular 8 - PullRequest
0 голосов
/ 20 сентября 2019

у меня есть код ниже в моем файле машинописного текста, но когда я компилирую это, это дает мне ошибку как

Оператор '>' не может быть применен к типам 'void' и 'number'

Спасибо ..

Вот мой код

this.languages.forEach((o: any, i: any) => {
                const control1 = new FormControl(this.UserSelectedLanguages.indexOf(o.id) > -1); // if first item set to true, else false
                (this.languageform.controls.selectedlang as FormArray).push(control1);
});

Ответы [ 3 ]

4 голосов
/ 20 сентября 2019

Подумав об этом немного больше, мне приходит в голову, что весь смысл машинописи заключается в статической типизации, поэтому попытка трактовать возвращение из indexOf как логическое значение идет вразрез с самой сущностью TS.

Кроме того, мне не ясно, как indexOf вернул бы void в первую очередь.Является ли UserSelectedLanguages обычным массивом js?

Я не очень хорошо знаком с angular или машинописью, но похоже, что this.UserSelectedLanguages.indexOf(o.id) возвращает void, и вы не можете сделать сравнение больше, чем междупустота и номер.Если это так, вам не нужно сравнивать это ни с чем.Его просто не пустое присутствие указывает, что это там:

// this alone may resolve to true or false
!!this.UserSelectedLanguages.indexOf(o.id)
0 голосов
/ 23 сентября 2019

Спасибо за ваши ответы ..

Я получил решение проблем, используя это ..

Я поставил this.UserSelectedLanguages.indexOf(o.id) !== -1 вместо this.UserSelectedLanguages.indexOf(o.id) > -1, и моя проблема решена ..

0 голосов
/ 20 сентября 2019

Убедитесь, что this.UserSelectedLanguages на самом деле array, потому что кажется, что это не так.

Более того, быстрое грязное решение было бы сделать что-то вроде этого.

const control1 = new FormControl(<number>this.UserSelectedLanguages.indexOf(o.id) > -1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...