web-dev-qa-db-ja.com

Typescriptは、React.createClassを使用するときに、プロパティがタイプ「JSX.IntrinsicElements」に存在しないと不平を言っていますか?

TypeScriptを使用してreduxアプリケーションを作成しています。

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

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

次にTypeScriptはこれを不平を言います:

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

これは、itemコンポーネントの名前が大文字で始まっていないため、TypeScriptで問題が発生するためです。 itemItemに置き換えると、この問題を解決できる可能性があります。

6
jsina

次のようにカスタム要素タイプを宣言できます。

import * as React from 'react'

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