je un PageLayout de composants réagissent écrit dactylographié:réagissent composants étendus et dactylographiées génériques et setState
export interface IPageLayoutProps {...}
export interface IPageLayoutActions {...}
export interface IPageLayoutLocalState {...}
export default
class PageLayout<P extends IPageLayoutProps & IPageLayoutActions, S extends Object>
extends React.Component<P, S>
{
render() {
return (...)
}
}
puis j'essaie d'étendre comme ce composant ceci:
import PageLayout, { IPageLayoutProps, IPageLayoutActions, IPageLayoutLocalState } from './PageLayout'
export interface IPageLayoutSidebarProps {...}
export interface IPageLayoutSidebarActions {...}
interface IPageLayoutSidebarState {sidebarVisible: boolean}
export default
class PageLayoutSidebar<P extends IPageLayoutSidebarProps & IPageLayoutSidebarActions & IPageLayoutProps & IPageLayoutActions, S extends IPageLayoutSidebarState & IPageLayoutLocalState>
extends PageLayout<P, S>
{
render() {
return (...)
}
toggleSidebar(visible:boolean) {
this.setState({
...this.state,
sidebarVisible: visible
})
}
}
le problème est que J'obtiens une erreur en essayant d'appeler this.setState, il me dit que "les types de propagation ne peuvent être créés qu'à partir de types d'objets". Quelqu'un a-t-il une idée de ce qui pourrait ne pas fonctionner avec l'état et pourquoi je ne peux pas utiliser l'opérateur spread?
Est-ce un moteur d'exécution ou erreur de compilation de temps? –
c'est une erreur du compilateur - (48,18): erreur TS2698: Les types de propagation peuvent uniquement être créés à partir de types d'objet. –