![](/img/trans.png)
[英]Newly cloned typescript react-native project riddled with errors
[英]Typescript Errors while converting a React project
这是我正在从标准ES2015转换为Typescript的React应用程序。 在我的.tsx文件(从常规.js文件转换)我得到几个打字稿错误,我不知道如何解决。
第一个是: error TS2339: Property 'propTypes' does not exist on type 'typeof App'.
这适用于:
App.propTypes = {
actions: PropTypes.object.isRequired,
fuelSavingsAppState: PropTypes.object.isRequired
};
我尝试在定义App的代码上面创建一个接口,如:
interface App {
propTypes?: any;
}
但这没有效果。 很明显我是新手稿,所以我错过了什么?
另一个错误是:
error TS2605: JSX element type 'Element' is not a constructor function for JSX elements.
Property 'render' is missing in type 'Element'
这适用于:
{settings.necessaryDataIsProvidedToCalculateSavings ? <FuelSavingsResults savings={settings.savings} /> : null}
该错误特指有关<FuelSavingsResults
的位
完全失去了从哪里开始。 任何建议都是最受欢迎的。
如果它有帮助,FuelSavingsResults的定义开始如下:
let FuelSavingsResults = (props) => {
let savingsExist = NumberFormatter.scrubFormatting(props.savings.monthly) > 0;
let savingsClass = savingsExist ? 'savings' : 'loss';
let resultLabel = savingsExist ? 'Savings' : 'Loss';
然后有一个常规的React渲染方法,但我认为这不重要。
错误TS2339:属性'propofs'在类型'typeof App'上不存在。
代替
class App extends React.Component{
}
App.propTypes = {
actions: PropTypes.object.isRequired,
fuelSavingsAppState: PropTypes.object.isRequired
};
使用static
属性。
class App extends React.Component{
static propTypes = {
actions: PropTypes.object.isRequired,
fuelSavingsAppState: PropTypes.object.isRequired
};
}
错误TS2605:JSX元素类型'Element'不是JSX元素的构造函数。 'Element'类型中缺少属性'render'
这是编译器中的一个错误,已经修复: https : //github.com/Microsoft/TypeScript/issues/6349 Alternative为props
提供类型注释。 🌹
propTypes真的需要吗? 编译时不会检查propTypes在运行时检查的接口吗?
interface IApp{
actions:any;
fuelSavingsAppState: (props:any)=> void;
}
class App extends React.Component<IApp,{}>{
}
或者如果你使用哑组件
const App = ({actions, fuelSavingsAppState }:IApp):React.ReactElement<{}> => (
<div>
What Ever you want to do with the props
</div>
)
注意:如果您正在使用对象,请为其创建一个接口。 就像现在给出的行为一样,理想情况下应该是一个接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.