我有这样的情况:
type TMapStateToProps = (state: TObjectAny, props: {resource: string, namespace: string }) => ({
savedFilters: TObjectAny
});
export const mapStateToProps: TMapStateToProps = (state, { resource, namespace = '_' }) => {
return {
savedFilters: Object.values(
get(state, 'admin.resources.settings/user-data.data', {})
)
.filter((({ key_name }: any): boolean => key_name === getSavedFiltersKey(resource, namespace)))
.reduce((prev: any, cur: any) => {
try {
const filter = JSON.parse(cur.data.filter);
prev[cur._id] = {
name: cur.data.name,
filter,
};
} catch (e) {
console.error(e);
}
return prev;
}, {}),
};
};
从Object.values(get(state, 'admin.resources.settings/user-data.data', {}))
得到的是一个空对象或一个对象数组,其中每个对象都有这样的结构:
type TObjectFilter = {
created_at: string,
data: TObjectAny
id: string,
key_name: string,
public: boolean,
updated_at: string,
user: string,
_id: string,
}
如果我在any
中使用filter((({ key_name }: any): boolean => key_name === getSavedFiltersKey(resource, namespace)))
so,一切都会正常工作,但我希望使用正确的类型并编写:filter((({ key_name }: {key_name:string}): boolean => key_name === getSavedFiltersKey(resource, namespace)))
在这种情况下,我在filter函数中得到以下错误:
No overload matches this call.
Overload 1 of 2, '(predicate: (value: unknown, index: number, array: unknown[]) => value is unknown, thisArg?: any): unknown[]', gave the following error.
Argument of type '({ key_name }: { key_name: string; }) => boolean' is not assignable to parameter of type '(value: unknown, index: number, array: unknown[]) => value is unknown'.
Types of parameters '__0' and 'value' are incompatible.
Type 'unknown' is not assignable to type '{ key_name: string; }'.
Overload 2 of 2, '(predicate: (value: unknown, index: number, array: unknown[]) => unknown, thisArg?: any): unknown[]', gave the following error.
Argument of type '({ key_name }: { key_name: string; }) => boolean' is not assignable to parameter of type '(value: unknown, index: number, array: unknown[]) => unknown'.
Types of parameters '__0' and 'value' are incompatible.
Type 'unknown' is not assignable to type '{ key_name: string; }'.
我是TS的新手,我花了很多时间四处寻找,我发现了一些与谓词和造型类型相关的类似问题,我试图应用到我的案例中,但没有成功,不幸的是,有人能帮我解释一下解决方案吗?谢谢!
转载请注明出处:http://www.beijingklxcmc.com/article/20230526/2189253.html