angular - ngrx select 字符串是什么类型?

标签 angular typescript ngrx ngrx-store

我想说我在 Typescript 和 Angular(包括 ngrx)方面都处于初学者水平。

我正在努力思考 Store 类的 select 方法如何接受字符串文字作为参数。这是代码:

export interface AppState {
    readonly tutorial: Tutorial[];
}

export class ReadComponent {

  constructor(private store: Store<AppState>) {
    this.tutorials = store.select('tutorial');
  }
}

现在,我看到 AppState 类有一个 tutorial 属性,这似乎是调用 store.select('tutorial') 的目的,但是如何呢?如果我更改传递给 select ex 的文字怎么办? store.select('yadayada'),编译器发出错误Argument of type '"yadayada"' is not assignable to parameter of type '"tutorial"。 “教程”和“yadayada”类型如何?为什么编译器将字符串文字作为类型?

最佳答案

它将其推断为存储对象类型的键,并可以从中推断出值类型。例如,您可以定义一个通用函数:

const getKey = <T>(obj: T, key: keyof T) => obj[key] ;

如果 key 不是 T 的键,它将正确推断返回类型并给出编译器错误。您可以将函数的返回值显式键入为 T[keyof T]。 Typescript 泛型和类型推断非常强大。

关于angular - ngrx select 字符串是什么类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53676651/

相关文章:

angular - Angular2 树状网格的最佳选择

typescript - "Missing exports"将 wasm 与 rollup 捆绑在一起时

angular - 使用 props 在 createSelector ngrx 中过滤

Angular2 AoT - 不支持表达形式

javascript - Angular 2 与[禁用]的双向绑定(bind)

angular - AWS EC2 上部署的网站与本地版本不同

javascript - 我可以在类型脚本事件处理程序中 ping 多个 API 吗?

typescript - 如何使用 Sequelize-Typescript 模型定义指定 NestJs Controller 的返回类型?

angular - 如何从 Angular 2 中的 url 获取值

http - 如何在 2 个 HTTP 请求将值返回到存储后触发 NgRx 操作