TS2339:属性X在类型“ {}”上不存在

时间:2018-08-04 00:41:21

标签: reactjs typescript

我似乎无法解决此错误。

  

App.tsx(9,15)中的错误         TS2339:类型“ {}”上不存在属性“ count”。

App.tsx

import React from "react";

import Test from "./Test";

const App = () => {
  return (
    <div>
      <Test count={1} />
    </div>
  );
}

export default App;

Test.tsx

import React from "react";

interface Props{
  count: number
}
interface State{}

class Test extends React.Component<Props, State>{
  render(){
    return <div>{this.props.count}</div>;
  }
}

export default Test;

我的tsconfig如下,

{
  "compilerOptions": {
    "allowJs": true,
    "jsx": "react",
    "module": "es6",
    "target": "es5",
    "allowSyntheticDefaultImports": true
  },
  "include": ["src"]
}

我也在使用webpack来构建应用程序。 我正在使用ts-loader

加载打字稿

package.json

  "dependencies": {
    "axios": "^0.18.0",
    "express": "^4.16.3",
    "fetch": "^1.1.0",
    "less": "^3.8.0",
    "mathjax": "^2.7.5",
    "node-html-parser": "^1.1.8",
    "react": "^16.4.2",
    "react-dom": "^16.4.2",
    "webpack": "^4.16.3"
  },
  "devDependencies": {
    "@types/express": "^4.16.0",
    "classnames": "^2.2.6",
    "css-loader": "^1.0.0",
    "less-loader": "^4.1.0",
    "nodemon": "^1.18.3",
    "style-loader": "^0.21.0",
    "ts-loader": "^4.4.2",
    "ts-node": "^7.0.0",
    "typescript": "^3.0.1",
    "webpack-cli": "^3.1.0",
    "webpack-dev-server": "^3.1.5"
  }

谢谢!

2 个答案:

答案 0 :(得分:5)

安装React类型定义:

npm install -D @types/react @types/react-dom

在没有安装类型的情况下,TS无法正确推断JSX元素所需的道具。希望他们在以后的c中使错误更加清晰:

答案 1 :(得分:0)

Test组件中添加以下内容似乎可行。

constructor(props: Props){ super(props); }

关于原因,here是对解决方案的解释。

另一个answer的另一种解释:

  

super允许您访问父类的构造方法。包含props的唯一原因是在构造函数内部访问this.props。