是否可以在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/