следуйте до этого вопроса .
Можно извлечь все возможные типы из интерфейса TS, используя индексированные операторы доступа .
In В моем случае я работаю с большим интерфейсом, созданным из избыточного хранилища / состояния. Я попробовал следующее: RootState[keyof RootState]
, но мой приведенный тип, к сожалению, неизвестного типа.
Интерфейс RootState экспортируется из магазина следующим образом: export type RootState = ReturnType<typeof combineReducers({allMyReducers: ... ,... ,...})>;
Я знаю, что keyof RootState
это выборка строк всех моих редукторов / свойств магазина, а также типа символа. Может быть, этот тип символа мешает типу RootState[keyof RootState]
? Я не знаю, это всего лишь предположение, но если это так, мне, вероятно, потребуется отфильтровать все типы строк (чтобы исключить символ в этом случае), как мне это сделать?
Кроме того, вопрос, связанный с этим об отладке такого рода проблем. Как я могу просмотреть расширенный список всех типов? Я работаю с VS-кодом и, к сожалению, это невозможно с VS-кодом атм столько, сколько я знаю.
РЕДАКТИРОВАТЬ: нашел решение к вопросу отладки.
Последний тип, который у меня есть, следующий:
type MyKeys = "along" | "list" | "ofAll" | "myKeys" | "andTheFollowingWeirdType" | typeof $CombinedState;
Обратите внимание на typeof $CombinedState
. Я бы сказал, что это единственный виновник, который может привести к некоторым неприятностям ». Как я могу отфильтровать это?
Кроме того, я нашел, где это объявляется в приставке: declare const $CombinedState: unique symbol
РЕДАКТИРОВАТЬ 2:
Я нашел «решение» ?. Оказывается, один из редукторов не был набран. И поэтому вызвал, что тип интерпретируется неправильно. Но это не совсем решение, потому что это означает, что rootReducer типа «любой» сломает мой вариант использования, хотя я думаю, что он все еще должен работать, не так ли?