ошибка машинописного текста не может-вызвать-объект-который-возможно-не определен после необязательной функции отправки 2 реквизитов

#javascript #reactjs #typescript #next.js

Вопрос:

Я хочу сделать компонент повторного использования формы чем-то вроде этого

 <Form onEdit={onEdit}} />
<Form onAdd={onAdd}} />
 

В моей Форме

 const FormTodo = ({ onAdd, onEdit,}: FormProps) => {}
 

Я хочу сделать что-то вроде этого

 export interface FormProps {
  onAdd?: (data: string) => void;
  onEdit?: (someText: string) => void;
}
 

проблема в том ? (необязательно) это не позволяет мне ставить флаг

Комментарии:

1. Что вы подразумеваете под «поставить флаг»? Что вы не можете позвонить onAdd() , потому что это, возможно, не определено?

2. Похоже, вам нужно проверить, существует ли функция, прежде чем вызывать ее. Напр.. if (typeof onAdd === "function") onAdd(...) Если требуется хотя бы один из onAdd или onEdit, вы можете использовать тип объединения для указания этого type Props = { onAdd: (data: string) => void } | { onEdit: (someText: string) => void .

3. спасибо вам обоим @cdimitroulas