Я кодирую функциональный компонент в сокращении и добавляю возвращаемые значения для определенного c действия. Новое значение поступает из Promise, поэтому, если тип называется Ival
, возвращаемое значение будет иметь тип Promise<Ival | null>
(null в случае неудачного ответа). Мой вопрос: как определить тип возвращаемого значения Ival
?
Это действие:
export const addVal = (data: IData) => async (dispatch: IDispatch): Promise<IVal | null> => {
try {
const resp = await api.vals.create(data);
dispatch({ type: "CREATE_VAL", payload: resp });
return resp;
} catch (error) {
dispatch({ type: "ERROR_MSG" ,payload: error });
return null;
}
};
это функция, которую я использую для отправки:
const createNewConnection = async (data: IData): Promise<void> => {
try {
const newVal: IVal | null = await dispatch(addVal(data));
onValCreated(newVal);
} catch (e) {
onValCreated(null);
}
};
Функция onValCreated
получает тип IVal
в качестве аргумента, и это сообщение об ошибке:
"TS2559: Type '(dispatch: IDispatch) => Promise' не имеет свойства, общие с типом 'IVal' "
Я пробовал отправить оба:
// First try
const newVal: IVal | null = await dispatch<IVal | null>(addVal(data));
// Second try
const newVal: IVal | null = await dispatch<Promise<IVal | null>>(addVal(data));
Но это не сработало