Javascript React和Typescript:没有传递道具时类的约定
我想知道指定React组件在Typescript中没有道具的正确方法是什么 如果我有一个组件,我可以通过两个接口指定道具和状态:Javascript React和Typescript:没有传递道具时类的约定,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我想知道指定React组件在Typescript中没有道具的正确方法是什么 如果我有一个组件,我可以通过两个接口指定道具和状态: interface MyProps { text: string } interface MyState { count: number } class MyComponent extends React.Component<MyProps, MyState> { ... } 接口MyProps{ 文本:字符串 } 接口MyState{
interface MyProps {
text: string
}
interface MyState {
count: number
}
class MyComponent extends React.Component<MyProps, MyState> {
...
}
接口MyProps{
文本:字符串
}
接口MyState{
计数:数字
}
类MyComponent扩展了React.Component{
...
}
那么,如果我的组件没有道具,我应该使用void
、undefined
还是{}
这个确切(几乎)的问题在本周的公告中得到了回答
然而,大多数情况下,状态从未在组件中使用。在这些情况下,我们可以将类型写为object或{},但我们必须显式地这样做:
class FooComponent extends React.Component<FooProps, object> {
// ...
}
类FooComponent扩展了React.Component{
// ...
}
因此,在您的例子中,您只需将props参数的
object
的用法与state参数的用法相反。我认为没有“正确的方法”可以做到这一点,但当组件没有props(或没有状态)时,我通常使用void
,这是:根本没有任何类型
{}
从类型系统的角度来看更可取<代码>未定义的是不准确的,无效
毫无意义@NitzanTomer没有道具映射到空集合的概念,而不是没有集合吗?谢谢你的提示@我想这取决于你想表达什么。当一个组件没有任何道具时,我通常更喜欢将其视为一个没有道具概念的组件,而不是一个没有道具的组件。当存在继承并且父类不需要任何道具时,我会使用{}
。但是,这是个人喜好。@NitzanTomer谢谢你的解释,我很感激。谢谢你的回答!