Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React和Typescript:没有传递道具时类的约定_Javascript_Reactjs_Typescript - Fatal编程技术网

Javascript 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{

我想知道指定React组件在Typescript中没有道具的正确方法是什么

如果我有一个组件,我可以通过两个接口指定道具和状态:

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谢谢你的解释,我很感激。谢谢你的回答!