Из redux-devtools-extension я хотел реализовать интерфейс EnhancerOptions, который содержит следующее свойство функции (или метод или, однако, на него следует ссылаться, когда речь идет об интерфейсах):
stateSanitizer?: <S>(state: S, index: number) => S;
Дело в том, что я не смог предоставить тип для S (форма состояния, если хотите), например, что-то вроде этого:
const options: EnhancerOptions = {
stateSanitizer: (state: MyState, index: number) => state.data ? { ...state, data: '<<LONG_BLOB>>' } ? state
};
дает мне следующую ошибку:
Types of parameters 'state' and 'state' are incompatible.
Type 'S' is not assignable to type 'MyState'.ts(2322)
Действительно ли возможно предоставить тип S из реализации, а не во время использования, как в:
options.satetSanitizer<MyState>(state, index);
Как мне go о реализации такого интерфейса, так как для чтобы быть действительно полезным, функция, которую получает stateSanitizer, должна работать в соответствии с формой моего состояния, как вы можете видеть в state.data , поскольку data никогда не будет существовать для типа S