Как работать с редуктором внутри дженерика? - PullRequest
0 голосов
/ 15 мая 2019

Контекст использует Mobx с React, пытается написать класс, который принимает объект с хранилищами и создает общую ссылку.

    class RootStore<T, K extends keyof T> {
      constructor(stores: T) {
        const storesWithRef: T = Object.keys(stores).reduce((acc: T, key: K) => {
            const store = stores[key];
            return ({
              ...acc,
              [key]: store.connectStore(this),
            });
          }, {});
        Object.assign(this, storesWithRef);
      }

Это интерфейс для базы каждого магазина -

    export interface BaseStoreInterface<T> {
      rootStore: T;
      connectStore: (rootStore?: T) => T;
      externalStore: boolean;
    }

Этот код работает нормально, но TypeScript дает мне две ошибки -
enter image description here

String is not assignable to type 'K'

и, - enter image description here

Я понимаю, что нужно сделать, но я просто не мог заставить это работать. Я использую TypeScript@3.4.5

Код в порядке, нет ошибок, нет ничего, добавление ts-ignore к этим ошибкам приводит к хорошему времени выполнения.

Есть идеи?

...