web-dev-qa-db-fra.com

Typescript se plaint que la propriété n'existe pas sur le type «JSX.IntrinsicElements» lors de l'utilisation de React.createClass?

J'utilise TypeScript pour écrire une application redux.

var item = React.createClass({
  render: function() {
    return (<div>hello world</div>)
  }
});

export default class ItemList extends Component<any, any> {
    render() {
        return (<item />)
    }
}

Alors TypeScript se plaint de ceci:

Property 'item' does not exist on type 'JSX.IntrinsicElements'.
20
roger
var Item = React.createClass({
  render: function() {
    return (<div>hello world</div>)
  }
});

export default class ItemList extends Component<any, any> {
    render() {
        return (<Item />)
    }
}
29
RM-123

En effet, le nom de votre composant item ne commence pas par une majuscule, ce qui fait que TypeScript se plaint. Le remplacement de item par Item pourrait résoudre ce problème.

6
jsina

Vous pouvez déclarer votre type d'élément personnalisé comme ceci:

import * as React from 'react'

declare global {
  namespace JSX {
    interface IntrinsicElements {
      item: React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
    }
  }
}
5
Sinapcs