Typescript: оператор индексированного доступа возвращает тип unknown - PullRequest
0 голосов
/ 05 февраля 2020

следуйте до этого вопроса .

Можно извлечь все возможные типы из интерфейса 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 типа «любой» сломает мой вариант использования, хотя я думаю, что он все еще должен работать, не так ли?

...