Почему я получаю ошибку при попытке объявить локальную переменную?

#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);
  

Обычно это предпочтительнее, поскольку это приводит к меньшему шаблону и меньшему количеству кода, который нужно прочитать.