Reselect Redux 函数返回的 TypeScript 类型?

标签 typescript reselect

是否可以在Redux的Reselect中定义createSelector函数的返回类型?

我无法从官方文档中弄清楚这一点:https://github.com/reduxjs/reselect#q-are-there-typescript-typings

这个备忘单似乎也没有提供这一点: https://github.com/piotrwitek/react-redux-typescript-guide#selectors-with-reselect

import { createSelector } from 'reselect';

import { TodosState } from './reducer';

export const getTodos = (state: TodosState) => state.todos;

export const getTodosFilter = (state: TodosState) => state.todosFilter;

export const getFilteredTodos = createSelector(getTodos, getTodosFilter, (todos, todosFilter) => {
  switch (todosFilter) {
    case 'completed':
      return todos.filter(t => t.completed);
    case 'active':
      return todos.filter(t => !t.completed);

    default:
      return todos;
  }
});

如果我知道 getFilteredTodos 的返回结果是这样的:

type Return = {
  text: string;
  completed: boolean;
}[]

那我可以定义这个吗?

最佳答案

您可以像这样定义返回:

export const getFilteredTodos = createSelector(getTodos, getTodosFilter, (todos, todosFilter) : { text: string; completed: boolean; }[] => {
  switch (todosFilter) {
    case 'completed':
      return todos.filter(t => t.completed);
    case 'active':
      return todos.filter(t => !t.completed);

    default:
      return todos;
  }
});

关于Reselect Redux 函数返回的 TypeScript 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60864420/

相关文章:

Redux/Reselect - 选择器重用

javascript - 在重新选择选择器中,如果对象键存在于另一个数组中,则使用带键对象增强对象

索引类型的TypeScript键太宽

typescript - 参数 'saga' 和 'saga' 的类型不兼容

node.js - Web3js 无法在 Azure 上编译

javascript - Angular Material 2 - 在单元测试的 md-checkbox 中触发更改事件

json - 输入 "json"| Angular HttpClient 中的 "json"不满足 undefined

javascript - 大型列表的过滤性能

javascript - 在 createSelector 中使用钩子(Hook)安全吗?

javascript - Redux中如何处理关系数据?