Javascript Typescript react/redux指南-如何从js翻译?
我在翻译这个。以下是我到目前为止翻译的代码(在Todo.tsx中):Javascript Typescript react/redux指南-如何从js翻译?,javascript,typescript,visual-studio-code,react-redux,Javascript,Typescript,Visual Studio Code,React Redux,我在翻译这个。以下是我到目前为止翻译的代码(在Todo.tsx中): 因为PropTypes似乎不包含任何bool或func或string成员。将import*替换为来自“react”的PropTypes使用导入*作为“道具类型”中的道具类型 import * as React from 'react' import * as PropTypes from 'react'; 这两条线路很奇怪,我不确定它们是否正常工作React和PropTypes是它们自己包的默认导出。因此,如果您使用的是Re
因为
PropTypes
似乎不包含任何bool
或func
或string
成员。将import*替换为来自“react”的PropTypes代码>使用导入*作为“道具类型”中的道具类型代码>
import * as React from 'react'
import * as PropTypes from 'react';
这两条线路很奇怪,我不确定它们是否正常工作React
和PropTypes
是它们自己包的默认导出。因此,如果您使用的是Reactv15.5
及以上版本,则应为:
import React from 'react';
import PropTypes from 'prop-types';
如果您使用的是较低版本的React,还可以执行以下操作:
import React,{PropTypes}来自'React'代码>
关于你的TypeScript
问题:
您可以删除propTypes
声明,因为您已经在使用声明的接口用TypeScript
键入组件。因此,propTypes
变得毫无用处
您仍然可以使用defaultProps
如果您的一个道具是可选的首先,实际上没有理由将PropTypes与TypeScript一起使用
第二,您可能想考虑启用<代码>“允许合成”或“代码”>或“最近的添加,它的名字从我的代码中逃逸到您的代码> TSCONFIG.JSON<代码>,这样您就可以避免<代码>导入*> < /COD> < < /P>
第三,您应该将您的SFC定义为
React.SFC
,而不是在参数中断言预期的道具。详情如下:
const Todo: React.SFC<ITodo> = (props) => ();
const Todo:React.SFC=(props)=>();
当然,您可以像以前那样解构和使用JSX。这是如何编译的?在较新的版本中或React
PropTypes在其自己的包中PropTypes
。它不再在react
包中,但最好从“prop-types”导入PropTypes代码>您绝对不应该将包中的所有导出重命名为新命名空间。如果可以,应避免使用*
IMO@KevinAmiranoff你建议改为使用什么-我认为导入特定的名称空间,但是从React
导入什么特定的名称空间。什么是defaultProps
?@anarrayofffunctions与你的问题无关,但却是一个重要的React概念。为什么使用React.SFC
更好?我已经设置了您指定的标志-allowSyntheticDefaultImports
,但是您能否向我解释一下这有助于避免import*as
-我还应该写些什么?不管怎样,我想我得到了它-从'React'导入React
@KevinAmiranoff它是惯用的,所以乍一看你就知道你在使用React-SFC。它还为您定义了子项
。这些理由还不足以保证你可以回去改变你以前做过的一切,但是我建议你继续使用React.SFC
。@anarrayofffunctions你知道了。以下是TS文档:谢谢@萨姆
import React from 'react';
import PropTypes from 'prop-types';
const Todo: React.SFC<ITodo> = (props) => ();