#angular #typescript
#angular #typescript
Вопрос:
Мне интересно, каков тип перечисления? В моем примере мне нужно ссылаться на мое Direction
перечисление в моем шаблоне. Я делаю это, присваивая Direction
перечисление direction
переменной, которую я предоставил в своем компоненте. В настоящее время эта переменная имеет тип any
, но я хочу быть более конкретным. Каким должен быть этот тип?
<!-- component.html -->
<p [ngSwitch="getDirection()"]>
<span *ngSwitchCase="direction.NORTH">Heading North</span>
<span *ngSwitchCase="direction.EAST">Heading East</span>
</p>
// component.ts
enum Direction {
NORTH,
EAST,
SOUTH,
WEST
}
direction: any; // <-- what should this type be?
constructor() {
this.direction = Direction;
}
Комментарии:
1.
direction$: Direction
. Не усложняйте это, чем это должно быть :).2. Я пробовал это, но
this.direction$
подсвечивается ошибкойType 'typeof Direction' is not assignable to type 'Direction'
3. Обратите внимание, что суффикс $ обычно используется для обозначения наблюдаемого .
4.
direction$: typeof Direction;
должно быть в порядке5. @TomaszGawel — потрясающе,
typeof Direction
сделал свое дело. Можете ли вы ответить ответом, чтобы я мог пометить его как правильный ответ?
Ответ №1:
direction$: typeof Direction;
Должно быть в порядке.
Но на самом деле вам это не нужно. Вы можете позволить typescript определять этот тип:
enum Direction { NORTH, EAST, SOUTH, WEST }
class MyComponent {
readonly direction$ = Direction;
constructor() {
//...
}
}
В этом случае нет необходимости ждать инициализации до вызова конструктора, так как все известно заранее.
Теперь вы можете навести указатель мыши на $ field и увидеть его предполагаемый тип (я предполагаю, что вы используете vscode).