type TResultCategory<T> = {
title: string;
items: T[];
description?: string;
delete(dispatch: Dispatch<{}>): void;
update?(dispatch: Dispatch<{}>, products: TCartProduct[]): void;
}
type TResult = (TResultCategory<TResultProductQueue> | TResultCategory<TCartProduct>)[]
// ...
const [
unavailableCategoriesQueue,
updateUnavailableCategoriesQueue
] = useState<TResult>([]),
const onContinue = (): void => {
unavailableCategoriesQueue[0].delete(dispatch); // <= error
unavailableCategoriesQueue.slice(1).forEach((category) => {
category?.update(dispatch, unavailableCategoriesQueue[0]?.items); // <= error
});
};
//...
字符串
UnavailableCategoriesQueue是一个数组,它可以有类型TResultCategory和TResultCategory,这两种类型都有一个delete方法。
1条答案
按热度按时间eoigrqb61#
TResult
的结果是一个数组。你把这个数组分解成两个constunavailableCategoriesQueue
和unavailableCategoriesQueue
。这些const现在包含TResultCategory<TResultProductQueue> | TResultCategory<TCartProduct>
。但不是数组!unavailableCategoriesQueue[0]
现在访问这个对象中带有键0
的属性,它将any
作为类型。any.delete
也将any
,any.delete()
=>any.any()
是错误消息中的“unsafe call”。不知道你想做什么,但至少把
unavailableCategoriesQueue
当作它本身的对象,而不是一个数组。