我正在使用typescript来编写redux应用程序。
var item = React.createClass({
render: function() {
return (<div>hello world</div>)
}
});
export default class ItemList extends Component<any, any> {
render() {
return (<item />)
}
}
然后打字稿抱怨这个:
Property 'item' does not exist on type 'JSX.IntrinsicElements'.
答案 0 :(得分:13)
var Item = React.createClass({
render: function() {
return (<div>hello world</div>)
}
});
export default class ItemList extends Component<any, any> {
render() {
return (<Item />)
}
}
答案 1 :(得分:5)
您可以这样声明您的自定义元素类型:
declare namespace JSX {
interface IntrinsicElements {
item: React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>,
}
}
答案 2 :(得分:3)
这是因为item
组件的名称不是以大写字母开头,从而导致Typescript抱怨。将item
替换为Item
可以解决此问题。
答案 3 :(得分:2)
对于坚持这一点的其他人。
解决方案是
rm -rf node_modules
npm install
打字稿抱怨
Property 'div' does not exist on type 'StyledInterface'.
和
Property 'div' does not exist on type 'JSX.IntrinsicElements'.
我认为根本原因是 vscode(我)不小心编辑了 node_modules 中的类型定义。
答案 4 :(得分:1)
看起来我和这个问题有同样的问题,但这是错别字:/但由于错误看起来非常相似,并且Google引导我来到了这里,所以我决定在这里分享。
我在声明中有错字:
declare global {
namespace JSX {
interface IntrinisicElements {
'about-me': { me: string }
}
}
}
我使用的是 IntrinisicElements (而不是 IntrinsicElements )(在“ Intrin”之后加上“ i”字母)。编译器没有抱怨,因为它是接口的定义,因此名称可以由我们选择。
错误是这样的:
“ JSX.IntrinsicElements”类型上不存在“关于我”属性。
答案 5 :(得分:0)
我用PascalCase写组件的名字然后错误消失了