使用 React.createClass 时,打字稿抱怨 属性 在类型 'JSX.IntrinsicElements' 上不存在?
Typescript complains Property does not exist on type 'JSX.IntrinsicElements' when using React.createClass?
我正在使用 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'.
您的组件必须以大写字母 I
而不是小写字母 i
开头,否则 TypeScript 会大喊大叫。将 item
更改为 Item
应该可以修复它:
var Item = React.createClass({
render: function() {
return (<div>hello world</div>)
}
});
export default class ItemList extends Component<any, any> {
render() {
return (<Item />)
}
}
您可以像这样声明您的自定义元素类型:
import * as React from 'react'
declare global {
namespace JSX {
interface IntrinsicElements {
item: React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
}
}
}
那是因为你的 item
组件名称没有以大写字母开头,导致 Typescript 报错。将 item
替换为 Item
可以解决此问题。
看起来我遇到了与这个问题相同的问题,但这是打字错误:/但我决定在这里分享它,因为错误看起来非常相似并且 google 把我带到这里。
我在声明中有错别字:
declare global {
namespace JSX {
interface IntrinisicElements {
'about-me': { me: string }
}
}
}
而不是 IntrinsicElements 我有 IntrinisicElements('Intrin' 之后的额外 'i' 字母)。编译器没有报错,因为是接口的定义,所以名字可以自己选。
错误是这样的:
Property 'about-me' does not exist on type 'JSX.IntrinsicElements'.
对于坚持这个的其他人。
解决方案是
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 中的类型定义。
我用PascalCase写组件名然后错误消失了
记住:“item”在 TypeScript 中无效,必须声明为“Item”,首字母大写!
它会像:
var Item = React.createClass({
render: function() {
return (<div>hello world</div>)
}
});
美好的一天!
如果您只是通过在 VSCode 中按 F2
重命名标签,可能会发生这种情况,这可能会更改标签的类型。
重命名时,某些 index.d.ts
文件应该已在新选项卡中打开。检查选项卡是否仍处于打开状态。路径可能类似于 .../node_modules/@types/react/index.d.ts
.
如果您找到该选项卡,请进入它,然后按 ctrl-z(cmd-z)撤消您的更改。
如果您没有看到该选项卡,您可能已经关闭了它。尝试使用热键重新打开最近关闭的标签页。如果您不知道热键,请使用命令面板 View: Reopen Closed Editor
.
继续这样做直到找到文件,然后撤消更改。 (VSCode 记住撤消的更改历史记录,即使在您关闭选项卡之后)
我正在使用 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'.
您的组件必须以大写字母 I
而不是小写字母 i
开头,否则 TypeScript 会大喊大叫。将 item
更改为 Item
应该可以修复它:
var Item = React.createClass({
render: function() {
return (<div>hello world</div>)
}
});
export default class ItemList extends Component<any, any> {
render() {
return (<Item />)
}
}
您可以像这样声明您的自定义元素类型:
import * as React from 'react'
declare global {
namespace JSX {
interface IntrinsicElements {
item: React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
}
}
}
那是因为你的 item
组件名称没有以大写字母开头,导致 Typescript 报错。将 item
替换为 Item
可以解决此问题。
看起来我遇到了与这个问题相同的问题,但这是打字错误:/但我决定在这里分享它,因为错误看起来非常相似并且 google 把我带到这里。
我在声明中有错别字:
declare global {
namespace JSX {
interface IntrinisicElements {
'about-me': { me: string }
}
}
}
而不是 IntrinsicElements 我有 IntrinisicElements('Intrin' 之后的额外 'i' 字母)。编译器没有报错,因为是接口的定义,所以名字可以自己选。
错误是这样的:
Property 'about-me' does not exist on type 'JSX.IntrinsicElements'.
对于坚持这个的其他人。
解决方案是
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 中的类型定义。
我用PascalCase写组件名然后错误消失了
记住:“item”在 TypeScript 中无效,必须声明为“Item”,首字母大写! 它会像:
var Item = React.createClass({
render: function() {
return (<div>hello world</div>)
}
});
美好的一天!
如果您只是通过在 VSCode 中按 F2
重命名标签,可能会发生这种情况,这可能会更改标签的类型。
重命名时,某些 index.d.ts
文件应该已在新选项卡中打开。检查选项卡是否仍处于打开状态。路径可能类似于 .../node_modules/@types/react/index.d.ts
.
如果您找到该选项卡,请进入它,然后按 ctrl-z(cmd-z)撤消您的更改。
如果您没有看到该选项卡,您可能已经关闭了它。尝试使用热键重新打开最近关闭的标签页。如果您不知道热键,请使用命令面板 View: Reopen Closed Editor
.
继续这样做直到找到文件,然后撤消更改。 (VSCode 记住撤消的更改历史记录,即使在您关闭选项卡之后)