打字稿TS2532-可能未定义对象

时间:2020-06-17 20:55:21

标签: typescript

    <Form.Field>
      <label>Rua</label>
      <input name='endereco.rua' value={user.endereco.rua}  onChange={(e)=>handleInputChange(e)} placeholder='Insira sua Rua' />
      {errors.endereco.rua !== '' && <ErrorMessage>{errors.endereco.rua}</ErrorMessage>}

    </Form.Field>

     <Form.Field>
      <label>Numero</label>
      <input name='endereco.numero' type='number'   onChange={(e)=>handleInputChange(e)} placeholder='Insira seu numero' />
      {errors.endereco.numero !==  undefined  && <ErrorMessage>{errors.endereco.numero}</ErrorMessage>}

    </Form.Field>

  export  interface Errors{
    name?: string;
    password?: string;
    email?: string;
    cpf?: string;
    endereco?: {
        cep?: string;
        cidade?: string;
        bairro?: string;
        rua?: string;
        numero?: string;
    }

   }

如何停用此选项或解决问题?只是现在它给了我这个错误。谢谢!

错误:打字稿TS2532-对象可能未定义。

1 个答案:

答案 0 :(得分:1)

我们不知道您的特定类型,但是大概errorsendereco可能是undefined。您可以通过以下方式处理该问题:

{errors && errors.endereco && <ErrorMessage>{errors.endereco.rua}</ErrorMessage>}

如果您还想检查属性本身是否不是undefined(类似于您目前的做法),只需将其添加到链中:

{errors && errors.endereco && errors.endereco.rua && <ErrorMessage>{errors.endereco.rua}</ErrorMessage>}

基本上,如果该链上的任何值为undefined,则它将短路&&条件,并且在那里不会呈现任何内容。但是,如果定义了所有值,则将呈现<ErrorMessage/>元素。