Назначенный тип выражения "X" нельзя назначить типу "X" |"Y" - PullRequest
0 голосов
/ 17 июня 2019

Я получаю эту ошибку из углового шаблона:

Назначенный тип выражения "default" нельзя назначить типу "default" | "удалить" | "Переименовать" `

В строке, которая говорит currentAction = 'default':

enter image description here

Но моя currentAction переменная объявлена ​​так:

type Action = 'default' | 'delete' | 'rename';
public currentAction: Action = 'default';

Так что я думаю, что присвоение его допустимо, поскольку default является допустимым значением.

Если я делаю что-то подобное в классе моего компонента (не в шаблоне), нет ни предупреждения, ни ошибки:

this.currentAction = 'default'

Похоже ли это на ошибку в моей IDE (WebStorm) или что-то не так с назначением этой переменной в шаблоне Angular?

Ответы [ 2 ]

2 голосов
/ 17 июня 2019

Это ошибка в IDE, исправленная в следующем 2019.2.Пожалуйста, попробуйте 2019.2 EAP - там вроде все нормально работает:

enter image description here

0 голосов
/ 17 июня 2019

Поведение достаточно правильное, потому что тип можно изменить, и поэтому IDE не может быть уверена, что строковое значение 'default' будет соответствовать типу в будущем.

В таких случаях лучше использовать enums , потому что вы можете использовать значение и изменить его без проблем:

enum Action {
    DEFAULT = 'default',
    DELETE = 'delete',
    RENAME = 'rename'
}
...