reactjs - Varför utlöser TypeScript ett fel i min HOC som använder rest-egenskaper när jag försöker skicka en annan egenskap?
Jag har skrivit ett wrapper för att ansluta komponenter till en store genom att injicera en store-prop. Wrapper-koden fungerar korrekt och klarar testerna.
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;
Men i ett av mina tester har jag
const ComponentToWrap = withStore(
({store, otherProp}) => (
<div>
<span>
{store}
</span>
<span>
{otherProp}
</span>
</div>
)
);
vilket orsakar TypeScript-fel Typen 'PropsWithChildren<InjectedStoreProps>' har ingen egenskap 'otherProp' och ingen strängindexsignatur.
Jag är ny på TypeScript, så jag kan definitivt missförstå något. Jag har försökt saker från många Google-sökningar men ingen av dem har hjälpt.
React v16.8.6 Typescript v3.4.3
Svar #1
Problemet är att du försöker dekonstruera (https://basarat.gitbooks.io/typescript/docs/destructuring.html) ett objekt som inte har egenskapen otherProp. Du kan fixa det genom att lägga till den:
interface InjectedStoreProps {
store: RootStore;
otherProp: any;
}
