#angular #typescript
#angular #typescript
Вопрос:
Я перехожу к машинописному тексту. В моей функции в компоненте я пытаюсь объявить локальную переменную «содержит»:
setUpgrade($event) {
contains : Boolean = this.selectedUpgrades.includes($event);
//some logic
}
но в этой строке:
contains : Boolean = this.selectedUpgrades.includes($event);
при логическом значении я получаю эту ошибку:
Type 'boolean' is not assignable to type 'BooleanConstructor'.
Почему я получаю ошибку при объявлении переменной?
Ответ №1:
Boolean
Тип — это то, что вы получите, если вызовете логический конструктор:
const somethingWeird = new Boolean(Math.random() < 0.5);
Это почти никогда не то, что вы хотите — это может вести себя довольно странно. Например, логический объект, содержащий false
, является истинным. Его typeof
тоже object
нет boolean
. boolean
Вместо этого используйте тип.
const contains : boolean = this.selectedUpgrades.includes($event);
Или, что еще лучше, полностью исключите аннотацию типа и позвольте TS вывести ее автоматически:
const contains = this.selectedUpgrades.includes($event);
Обычно это предпочтительнее, поскольку это приводит к меньшему шаблону и меньшему количеству кода, который нужно прочитать.