在将redux-toolkit从1.5升级到1.8之后,我的自定义选择器不再有效。下面是一个例子:
const getToken = createSelector<
AppState,
string | null,
Token | null
>(
(s: AppState) => (s.tokenResponse ? s.tokenResponse.accessToken : null),
(t: string | null) => {
if (t === null) {
return null;
}
try {
return JwtDecode(t);
} catch (e) {
return null;
}
}
);升级之后,我的IDE抱怨说,我传递的不是2个类型的参数,而是3个类型的参数。然而,我在文档中找不到现在它只接受2个类型参数的任何地方。
删除string | null (或任何其他参数)也没有帮助,唯一有帮助的就是离开createSelector<any, any>(...)。
如何确定createSelector所期望的类型定义?在哪里可以找到文档,在那里可以描述需要哪两种类型的文档?
发布于 2022-03-11 15:02:15
这些类型是推断出来的--您不应该手动声明该类型为泛型。
只管写
const getToken = createSelector(
(s: AppState) => (s.tokenResponse ? s.tokenResponse.accessToken : null),
(t: string | null) => {
if (t === null) {
return null;
}
try {
return JwtDecode(t);
} catch (e) {
return null;
}
}
);如果要手动插入返回类型,请在选择器函数中声明它:
const getToken = createSelector(
(s: AppState) => (s.tokenResponse ? s.tokenResponse.accessToken : null),
(t: string | null): Token | null => {
if (t === null) {
return null;
}
try {
return JwtDecode(t);
} catch (e) {
return null;
}
}
);https://stackoverflow.com/questions/71439242
复制相似问题