Reactjs 类型脚本条件呈现,类型';未定义';不可分配给类型CompanyStatsProps
有人能帮我调试typescript的问题吗 问题是我有一些功能组件,其中道具设置为特定类型Reactjs 类型脚本条件呈现,类型';未定义';不可分配给类型CompanyStatsProps,reactjs,typescript,Reactjs,Typescript,有人能帮我调试typescript的问题吗 问题是我有一些功能组件,其中道具设置为特定类型 export interface AppState { companyStats?: CompanyStatsProps; errorMessage?: string; } 公司统计数据是子组件的道具。仅当companyStats可用时才渲染 应用程序的初始状态为 state = { companyStats: undefined, errorMessage: undefined };
export interface AppState {
companyStats?: CompanyStatsProps;
errorMessage?: string;
}
公司统计数据是子组件的道具。仅当companyStats可用时才渲染
应用程序的初始状态为
state = { companyStats: undefined, errorMessage: undefined };
render() {
if (this.state.companyStats) {
return (
<React.Fragment>
<NavBar onSearch={this.handleCompanySearch} />
<DashBoard companyStats={this.state.companyStats}/>
</React.Fragment>
);
}
我是新手,不知道如何处理这种条件渲染
注:CompanyStats(state)是在用户搜索和API调用时更新的,代码中没有包含该语句或其他语句,因为我认为它们对调试没有用处。提前感谢简短回答:写下这个
export interface AppState {
companyStats?: CompanyStatsProps | undefined;
errorMessage?: string;
}
详细回答:当您将companyStats的类型设置为CompanyStatsProps时,您告诉typescript将始终定义companyStats。它永远不可能是未定义的。因此,当您将未定义的赋值给它时,它显示了一个错误。所以通过写作
companyStats?: CompanyStatsProps | undefined;
您正在告诉typescript,它可以是未定义的,也可以是CompanyStatsProps。如果您想将
companyStats
属性设置为未定义的属性,则需要初始化CompanyStatsProps
接口的属性。例如,我假设CompanyStatsProp
有两个属性id
和name
state={companyStats:{id:undefined,name:undefined},errorMessage:undefined}代码>什么是CompanyStatsProps
?它是一个类还是一个接口?它是一个接口标签描述问题的内容。如果问题不是关于角度的,那么使用[Angular]标记是不合适的。就这么简单。我对ReactJS了解不够,不知道问题是否真的与此有关。如果是,那么标签就可以了。如果这只是一个Typescript语言问题,那么您也不需要[reactjs]标记。不,它无法编写companyStats?:CompnayStatsProp相当于CompnayStatsProp |未定义,“”符号表示可选。问题在子组件中,它不是可选的,因此如果在父组件中我将其设置为“?”TS认为它可能未定义,但是它不能像我处理的IF语句一样,但是TS不知道这一点,并抛出一个错误。我已经定义了状态,这样一个属性将是X类型,或者将是未定义的,如果属性未定义,组件将不会被呈现。如果在初始化时没有将companyStats设置为undefined,而是将其设置为companyStats:{id:undefined,name:undefined},则必须添加更多检查。如果我在将来添加更多的道具,即CompanyEmployeesDetails,它将通过用户搜索进行的API调用进行更新,那么我还必须添加对这些道具的检查。
companyStats?: CompanyStatsProps | undefined;