Reactjs 如何将空值或等效值设置为字段?

Reactjs 如何将空值或等效值设置为字段?,reactjs,typescript,Reactjs,Typescript,我有这个组件状态: interface Person { name: string; surname: string; } interface CompState{ //...fields ... person?: Person; } render() { if(this.state.person){ const comp = <div>{this.person.name + this.person.surname}<

我有这个组件状态:

interface Person {
    name: string;
    surname: string;
}

interface CompState{
    //...fields ...
    person?: Person;
}

 render() {
     if(this.state.person){
       const comp = <div>{this.person.name + this.person.surname}</div>
     }

     ...
 }

我做错了什么?无法在typescript中将变量重新设置为null?

以下两个变量在typescript中是等效的:

person?: Person;
person: Person | undefined;
因此,如果要“取消设置”一个值,则必须指定
undefined
。 否则,如果您确实想使用
null
,您仍然可以这样做

person: Person | null;

类型“null”不能分配给类型Person | undefined
:因此您可以分配Person或undefined,但不能分配null。当然,除非字段的类型是
Person | null
。“undefined”是否等同于“null”以实现我想要的?我从来都不喜欢未定义的自己,因为它会误导人。是的,它应该是等价的。迂腐的评论:可选属性与可能未定义的属性不相同<代码>{a:4}可分配给类型
{a:number,b?:number}
,但不能分配给类型
{a:number,b:number |未定义}
。对于后者,您必须实际列出
b
属性并将其设置为
undefined
person: Person | null;