Type '{}' n'est pas cessible de type 'IntrinsicAttributes & IntrinsicClassAttributes
je suis en train d'effectuer un simple réagir application.
c'est mon index.tsx
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import App from './components/App';
import registerServiceWorker from './registerServiceWorker';
ReactDOM.render(
<App />,
document.getElementById('root') as HTMLElement
);
registerServiceWorker();
et ici, j'ai mon app.tsx
import * as React from 'react';
import SearchBar from '../containers/price_search_bar';
interface Props {
term: string;
}
class App extends React.Component<Props> {
//tslint:disable-next-line:typedef
constructor(props) {
super(props);
this.state = {term: '' };
}
render() {
return (
<div className="App">
<div className="App-header">
<h2>Welcome to React</h2>
</div>
<p className="App-intro">
this is my application.
</p>
<div>
<form>
<SearchBar term={this.props.term} />
</form>
</div>
</div>
);
}
}
export default App;
et aussi ma barre de recherche contenant:
import * as React from 'react';
interface Props {
term: string;
}
//tslint:disable-next-line:no-any
class SearchBar extends React.Component<Props> {
//tslint:disable-next-line:typedef
constructor(props) {
super(props);
this.state = { term: '' };
}
public render() {
return(
<form>
<input
placeholder="search for base budget"
className="form-control"
value={this.props.term}
/>
<span className="input-group-btn" >
<button type="submit" className="btn btn-secondary" >
Submit
</button>
</span>
</form>
);
}
}
export default SearchBar;
et j'ai enfin mon tsconfig.json
:
{
"compilerOptions": {
"outDir": "build/dist",
"module": "esnext",
"target": "es5",
"lib": ["es6", "dom"],
"sourceMap": true,
"allowJs": true,
"jsx": "react",
"moduleResolution": "node",
"rootDir": "src",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": false,
"strictNullChecks": true,
"suppressImplicitAnyIndexErrors": true,
"typeRoots": [
"node_modules/@types"
],
"noUnusedLocals": true
},
"exclude": [
"node_modules",
"build",
"scripts",
"acceptance-tests",
"webpack",
"jest",
"src/setupTests.ts"
]
}
Je reçois des différentes erreurs après erreurs et lorsque j'ai jamais corriger une erreur, une autre apparaît, je ne suis pas sûr de ce que j'ai fait que faire se comporter comme cela.
C'est la dernière erreur:
./src/index.tsx
(7,3): error TS2322: Type '{}' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<App> & Readonly<{ children?: ReactNode; }> & Reado...'.
Type '{}' is not assignable to type 'Readonly<Props>'.
Property 'term' is missing in type '{}'.
J'ai essayé de le corriger en modifiant mon tsconfig.json
mais le même message d'erreur s'affiche toujours, ce que je fais mal et pourquoi tapuscrit est bahing comme ça. Je suis très nouveau à cela et par cet exemple, je suis en train de udnertand comment réagir travaille tous ensemble.
- Pourquoi avez-vous besoin
{}
iciReact.Component<Props, {}>
? - J'ai changé dans le vide, également objet, mais le même!
- Ce qui se passe quand vous venez de passer les Accessoires et rien d'autre?
class App extends React.Component<Props> {
également retourne la même erreur qu'avant!- Et quand vous passez
any
? - Jetez un oeil ici stackoverflow.com/a/47388544/6219957
- merci l'erreur, est maintenant disparu, mais ma barre de recherche ne fonctionne plus!
- Que voulez-vous dire
- Aussi, vous êtes de passage à la
term
prop dansApp
un accessoire, mais vous n'avez jamais fourni à l'App
composant lorsque vous le rendre. - Je suis en train de faire une barre de recherche qui fonctionnent quand u type dans une entrée, de sorte que u doit eb pouvez le voir dans la console. J'ai changé mon code un peu, j'obtiens toujours la même erreur, au niveau de l'index.tsx!
- Mais il n'y a pas d'accessoires qui sont passés à l'Application, donc il n'y aura aucune valeur rendue dans la barre de recherche.
- c'est ce que j'essayais todo si cette erreur serait de s'en aller!
- Je ne comprends pas
- ReactDOM.render(<App terme="toto" />, document.getElementById('root') comme HTMLElement);
Vous devez vous connecter pour publier un commentaire.
J'ai résolu beaucoup de "pas cessible de type 'IntrinsicAttributes & IntrinsicClassAttributes" type d'erreurs (Microsoft fermés problème) juste en déclarant un objet qui est passé entièrement à la composante.
Avec l'OP exemple, au lieu d'utiliser
term={this.props.term}
, utilisez{...searchBarProps}
pour le faire fonctionner:Le problème ici n'est pas avec votre tslint paramètres. Regardez l'extrait de code suivant:
Dans
class SearchBar extends React.Component<SearchBarProps, SearchBarState> {
,SearchBarProps
etSearchBarState
désigner le type d'attendre des accessoires et de la nature de l'état pour le composantSearchBar
respectivement. Vous devez donner propTypes et stateType lorsque vous utilisez la machine.Vous pouvez éviter de donner des types en utilisant le mot -
any
mais je vous suggère fortement de ne pas suivre ce "mal" chemin d'accès si vous voulez vraiment prendre avantage de l'utilisation de la machine. Dans votre cas, il semble que vous n'avez pas spécifié le type d'état et l'a utilisé, fixation qui permettra de résoudre ce problème.Edit 1
Dans l'interface
SearchBarProps
,optionalArgument
devient un argument optionnel car nous ajoutons un point d'interrogation?
en face d'elle, afin<SearchBar term='some term' />
ne vais pas vous montrer toute erreur, même si vous ne passez pasoptionalArgument
explicitement.Espérons que cela résout votre problème!
<SearchBarPrice term="s"/>
et elle a effectivement travaillé!Juste eu ce même problème.
Vous avez membre appelé terme défini sur la Prop interface de votre Application de classe, mais vous n'êtes pas fournir une valeur lorsque vous créez votre Application élément.
Essayez ce qui suit:
J'ai aussi été confronté au même problème. Ajouter le code ci-dessous pour travailler avec .tsx composants.
ou
Je ne sais pas la raison exacte, mais je pense que tapuscrit drapeau le type d'erreur pendant la phase de compilation. Laissez-moi savoir si cela fonctionne pour vous.