angular - typescript 中枚举声明中的方括号的含义是什么?

标签 angular typescript enums ngrx ngrx-store

我正在查看 Angular ngrx 项目中名为 collection.ts 的 typescript 文件,在那里,我看到声明了以下枚举常量。

import { Action } from '@ngrx/store';
import { Book } from '../models/book';

export enum CollectionActionTypes {
  AddBook = '[Collection] Add Book',
  AddBookSuccess = '[Collection] Add Book Success',
  AddBookFail = '[Collection] Add Book Fail',
  RemoveBook = '[Collection] Remove Book',
  RemoveBookSuccess = '[Collection] Remove Book Success',
  RemoveBookFail = '[Collection] Remove Book Fail',
  Load = '[Collection] Load',
  LoadSuccess = '[Collection] Load Success',
  LoadFail = '[Collection] Load Fail',
}

/**
 * Add Book to Collection Actions
 */
export class AddBook implements Action {
  readonly type = CollectionActionTypes.AddBook;

  constructor(public payload: Book) {}
}

export class AddBookSuccess implements Action {
  readonly type = CollectionActionTypes.AddBookSuccess;

  constructor(public payload: Book) {}
}

export class AddBookFail implements Action {
  readonly type = CollectionActionTypes.AddBookFail;

  constructor(public payload: Book) {}
}

/**
 * Remove Book from Collection Actions
 */
export class RemoveBook implements Action {
  readonly type = CollectionActionTypes.RemoveBook;

  constructor(public payload: Book) {}
}

export class RemoveBookSuccess implements Action {
  readonly type = CollectionActionTypes.RemoveBookSuccess;

  constructor(public payload: Book) {}
}

export class RemoveBookFail implements Action {
  readonly type = CollectionActionTypes.RemoveBookFail;

  constructor(public payload: Book) {}
}

/**
 * Load Collection Actions
 */
export class Load implements Action {
  readonly type = CollectionActionTypes.Load;
}

export class LoadSuccess implements Action {
  readonly type = CollectionActionTypes.LoadSuccess;

  constructor(public payload: Book[]) {}
}

export class LoadFail implements Action {
  readonly type = CollectionActionTypes.LoadFail;

  constructor(public payload: any) {}
}

export type CollectionActions =
  | AddBook
  | AddBookSuccess
  | AddBookFail
  | RemoveBook
  | RemoveBookSuccess
  | RemoveBookFail
  | Load
  | LoadSuccess
  | LoadFail;

为枚举常量提供一个值很好,但我很困惑这个[Collection]在这里作为每个常量的一部分表示什么。这样的写法对枚举常量的值没有影响还是显示了其他的东西?谁能解释一下吗?

最佳答案

您可能正在使用一些 Flux/Redux 框架,例如 ngrx store 或类似框架。这个枚举定义了 Action 并确保你的 Action 键(字符串)在全局级别上是唯一的,因为最后,它们都被合并到 reducer react 的一大组 Action 中。 为了帮助满足该条件,您通常会将操作的类型放在方括号中的键开头。它只是一个命名约定,与 typescript 没有任何关系。

例如,

您可以有实体BookCategory。对于这两种情况,您都可以使用 Load Entity 键进行操作。为了区分这 2 个操作键,一种约定是使用诸如 [Book] Load Entity[Category] ​​Load Entity 之类的名称。

关于angular - typescript 中枚举声明中的方括号的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48073719/

相关文章:

Angular Typescript 从数据库加载对象

angular - 找不到名称 'google' Angular 8

javascript - tensorflow JS : TypeError: Cannot read property 'fetch' of undefined

c# - 丰富枚举 - 可能吗?

enums - 枚举类型作为输入或输出

angular - 沿库导出服务 stub 时的循环依赖

angular - 保持自动完成建议面板打开以进行多项选择,并在 Angular Material 2 的面板外部单击时关闭

angular - 在 router.events 中获取事件路由数据

sql - postgresql 如何插入具有默认值的枚举字段?

angular - 单击时将焦点设置为 textarea angular 5