У меня есть следующая структура компонентов:
export interface SearchFilterJobsProps<J = JobPosting> {
unwrap?: boolean;
jobs?: {
data: J[];
component?: React.ComponentType | React.ElementType;
};
searchMatchProps?: (keyof J)[];
}
export type SearchFilterJobsType<T = JobPosting> = React.FC<SearchFilterJobsProps<T>>;
export const SearchFilterJobs: SearchFilterJobsType = <Z extends JobPosting>(
{
jobs,
searchMatchProps,
className,
children,
...rest
}: SearchFilterJobsProps<Z> & React.HTMLAttributes<HTMLDivElement>) => { ... };
Я настроил его так, потому что хотел бы, чтобы этот компонент обрабатывал различные структуры данных. Но я, кажется, допустил некоторые ошибки, потому что, когда я пытаюсь его использовать:
<SearchFilterJobs<SpecificJobProps> jobs = {{data: specificJobs}} />
TypeScript говорит мне: TS2558: Expected 0 type arguments, but got 1..
Что я здесь делаю неправильно?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Что-то вроде:
export const SearchFilterJobs: SearchFilterJobsType = ...
выберет параметр типа по умолчанию для SearchFilterJobsType. То, что находится справа, не имеет значения — аннотация типа, если она есть, должна быть полной.
Самое простое решение в этом случае — использовать satisfies вместо аннотации к константе:
export type SearchFilterJobsType<T = JobPosting> = React.FC<SearchFilterJobsProps<T>>;
export const SearchFilterJobs = (<Z extends JobPosting>(
{
jobs,
searchMatchProps,
className,
children,
...rest
}: SearchFilterJobsProps<Z> & React.HTMLAttributes<HTMLDivElement>) => {
... }) satisfies React.FC<SearchFilterJobsProps<T>>;
Попробуйте переписать константу компонента в объявление функции. Я думаю, это должно сработать :)