У меня есть два интерфейса в моем коде, и я хочу выбрать один тип между этими двумя.
Вот код для интерфейсов:
interface createUserToSiteMutateUseStates {
setStateId: (value: React.SetStateAction<string | null | undefined>) => void;
StateId: string | null | undefined;
setCityId: (value: React.SetStateAction<string | null | undefined>) => void;
}
interface updateStoreSpatialCommitmentsVariablesUseState {
setStateSelected: (
value: React.SetStateAction<SelectorOptions[] | undefined | null>
) => void;
}
Я создал тип для распознаванияистинного интерфейса:
type whichType<T> = T extends "createUserToSiteMutate"
? createUserToSiteMutateUseStates
: T extends "updateStoreSpatialCommitmentsVariables"
? updateStoreSpatialCommitmentsVariablesUseState
: null;
И, наконец, я использовал whichType
:
export interface Props {
type:
| "createUserToSiteMutate"
| "createUnitVariables"
| "updateStoreSpatialCommitmentsVariables";
useStateProps?: whichType<type>;
}
Но когда я использую Props
, я получаю эту ошибку:
const handleChange = (option: SelectorOptions) => {
switch (type) {
case "createUserToSiteMutate":
useStateProps!.setCityId && useStateProps!.setCityId(null);
useStateProps!.setUniversityId &&
useStateProps!.setUniversityId(null);
useStateProps!.setOrganizationId &&
useStateProps!.setOrganizationId(null);
useStateProps!.setUnitId && useStateProps!.setUnitId(null);
useStateProps!.setStateId && useStateProps!.setStateId(option.value);
default:
break;
}
};
Свойство 'setCityId' не существует для типа 'createUserToSiteMutateUseStates |updateStoreSpatialCommitmentsVariablesUseState '.
Свойство' setCityId 'не существует для типа' updateStoreSpatialCommitmentsVariablesUseState'.ts (2339)
Как исправить эту ошибку? Проблема в whichType
?