rog*_*ger 17 typescript reactjs redux
我正在使用typescript来编写redux应用程序.
var item = React.createClass({
render: function() {
return (<div>hello world</div>)
}
});
export default class ItemList extends Component<any, any> {
render() {
return (<item />)
}
}
Run Code Online (Sandbox Code Playgroud)
然后打字稿抱怨这个:
Property 'item' does not exist on type 'JSX.IntrinsicElements'.
Run Code Online (Sandbox Code Playgroud)
Jka*_*nen 32
对于其他坚持这一点的人。
解决方案是
rm -rf node_modules
npm install
Run Code Online (Sandbox Code Playgroud)
打字稿抱怨
Property 'div' does not exist on type 'StyledInterface'.
Run Code Online (Sandbox Code Playgroud)
和
Property 'div' does not exist on type 'JSX.IntrinsicElements'.
Run Code Online (Sandbox Code Playgroud)
我认为根本原因是 vscode (我)不小心编辑了 node_modules 中的类型定义。
Sin*_*pcs 23
您可以像这样声明您的自定义元素类型:
import * as React from 'react'
declare global {
namespace JSX {
interface IntrinsicElements {
item: React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Raj*_*bat 21
var Item = React.createClass({
render: function() {
return (<div>hello world</div>)
}
});
export default class ItemList extends Component<any, any> {
render() {
return (<Item />)
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
对于所有遇到类似错误的人:
Property 'div' does not exist on type 'JSX.IntrinsicElements'.
Run Code Online (Sandbox Code Playgroud)
或者任何其他标签来代替 div。如果其他解决方案没有帮助,请尝试添加到tsconfig.json
:
...
"compilerOptions": {
"moduleResolution": "node"
}
...
Run Code Online (Sandbox Code Playgroud)
请记住:“item”在 TypeScript 中无效,您必须声明为“Item”,首字母大写!它会像:
var Item = React.createClass({
render: function() {
return (<div>hello world</div>)
}
});
Run Code Online (Sandbox Code Playgroud)
再会!
对于遇到此问题并且之前的答案不起作用的其他人,.tsx
由于tsconfig.json
文件配置错误,这种情况也可能发生在文件中。
我遇到了以下错误:
...
"compilerOptions": {
"jsx": "react-jsx"
}
...
Run Code Online (Sandbox Code Playgroud)
并通过将其更改为解决了它:
...
"compilerOptions": {
"jsx": "react"
}
...
Run Code Online (Sandbox Code Playgroud)
div
同样,上面的答案可能是首先要检查的事情,但如果您在标准 HTML 元素(如、等)上遇到这些错误,span
并且您正在使用 Typescript。检查你的 tsconfig.json!
看起来我在这个问题中遇到了同样的问题,但它是错字:/但我决定在这里分享,因为错误看起来非常相似,谷歌把我带到了这里。
我在声明中有错字:
declare global {
namespace JSX {
interface IntrinisicElements {
'about-me': { me: string }
}
}
}
Run Code Online (Sandbox Code Playgroud)
而不是IntrinsicElements我有IntrinisicElements('Intrin' 后面的额外的 'i' 字母)。编译器没有抱怨,因为它是接口的定义,所以名称可以由我们选择。
错误是这样的:
类型“JSX.IntrinsicElements”上不存在属性“about-me”。