Почему машинопись вызывает ошибку в моем HOC, который использует реквизит отдыха, когда я пытаюсь передать другой реквизит? - PullRequest
1 голос
/ 13 июня 2019

Я написал оболочку для соединения компонентов с магазином, добавив в магазин реквизиты. Код оболочки работает правильно и проходит тестирование.

import React, { ComponentType } from 'react';
import store from './index';
import { RootStore } from './RootStore';

interface InjectedStoreProps {
  store: RootStore;
}

const withStore = (WrappedComponent: ComponentType<InjectedStoreProps>) => {
  const output = ({...props}) => <WrappedComponent store={store} {...props} />;
  return output;
}

export default withStore;

Однако в одном из моих тестов у меня есть

const ComponentToWrap = withStore(
  ({store, otherProp}) => (
    <div>
      <span>
        {store}
      </span>
      <span>
        {otherProp}
      </span>
    </div>
  )
);

, что вызывает ошибку машинописи Type 'PropsWithChildren<InjectedStoreProps>' has no property 'otherProp' and no string index signature.

Я новичок в машинописи, поэтому определенно могу что-то недопонимать. Я пробовал вещи из многих поисков Google, но ни один из них не помог.

Реакция v16.8.6 Машинопись v3.4.3

1 Ответ

0 голосов
/ 13 июня 2019

Проблема в том, что вы пытаетесь деконструировать (https://basarat.gitbooks.io/typescript/docs/destructuring.html) объект, у которого нет свойства otherProp. Это можно исправить, добавив его:

interface InjectedStoreProps {
  store: RootStore;
  otherProp: any;
}
...