Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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
Reactjs 如果构造函数方法中的react-typescript具有特定的接口类型,我们如何在其中初始化状态_Reactjs_Typescript_React Native - Fatal编程技术网

Reactjs 如果构造函数方法中的react-typescript具有特定的接口类型,我们如何在其中初始化状态

Reactjs 如果构造函数方法中的react-typescript具有特定的接口类型,我们如何在其中初始化状态,reactjs,typescript,react-native,Reactjs,Typescript,React Native,我有以下代码:其中我有一个状态的接口类型。如何在构造函数方法中初始化它。因为它不允许我初始化为string/null/number interface IState{selectedUser?:IUserMenu} 类AssignUser扩展React.Component{ 建造师(道具:IProps){ 超级(道具); 此.state={ selectedUser:“我必须在此处放置的内容”}} 这是什么意思 this.state={} 在构造函数中是什么意思 IUserMenu是一个接口,因

我有以下代码:其中我有一个状态的接口类型。如何在构造函数方法中初始化它。因为它不允许我初始化为string/null/number

interface IState{selectedUser?:IUserMenu}

类AssignUser扩展React.Component{
建造师(道具:IProps){
超级(道具);
此.state={
selectedUser:“我必须在此处放置的内容”}}

这是什么意思
this.state={}
在构造函数中是什么意思

IUserMenu是一个接口,因此我无法初始化为数字“”,null


我唯一可以使用的是
undefined

您的IState接口指定它有一个名为
selectedUser
的属性,该属性是可选的(因为它后面有一个?)

如果您确实提供了一个
selectedUser
,则它必须是
IUserMenu
类型。所以你的
我要放在这里的
是一个符合
IUserMenu
界面的对象

this.state={}表示使用大括号中定义的对象初始化状态。在您的情况下,大括号中定义的对象必须与IState接口匹配(因此包含一个名为
selectedUser
的属性,该属性是
IUserMenu
类型的
未定义的

Hi@ankitjayaprakash

我举了一个例子,在这个例子中,我正在初始化接口中描述的要传递的对象(但不是可选的)

你可以看到


“this.state={}”在构造函数中的作用只是初始化该组件的状态,即使它可以在没有任何生成器函数的情况下退出。

我使用选择器道具中的selectedUser状态
selectedUser
,但我需要在构造函数中初始化此状态,但我的值是一个对象。在这种情况下,我应该初始化为什么?IUserMenu界面看起来像什么?这些类型中有一种是作为道具传入的吗?
interface IUserMenu{name:string;姓氏:string;}
好吧,我觉得初始化任何东西都没有意义。。。您可以这样做:
this.state={selectedUser:undefined}
或者根本不用在构造函数中设置状态,或者,您甚至可以这样初始化它:
this.state={selectedUser:{name:,姓氏:}
Type'null'不能分配给Type'IUserMenu | undefined'。我得到这个错误它对我来说没有任何错误的一部分,但如果你想更好地打开一个代码沙盒或StackBlitz和复制所有的代码。这样我们可以更好地帮助您。感谢@fg93的努力,我可以工作,但我得到了TSLint的建议。那很好。感谢构造函数中的
this.state={}
调用设置组件的初始状态。如果您没有
state的初始值,可能只需传递
this.state={}
。selectedUser
——您的界面表明它是可选的。