我已经编写了一个包装器,通过注入存储道具将组件连接到存储。包装器代码工作正常并通过测试。
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>
)
);
导致typescript错误
Type 'PropsWithChildren<InjectedStoreProps>' has no property 'otherProp' and no string index signature.
我是打字新手,所以肯定是误会了什么。我试过很多谷歌搜索的东西,但都没有帮助。
反应v16.8.6
Typescript 3.4.3版
最佳答案
问题是您试图解构(https://basarat.gitbooks.io/typescript/docs/destructuring.html)一个没有属性otherProp
的对象。您可以通过添加它来解决这个问题:
interface InjectedStoreProps {
store: RootStore;
otherProp: any;
}