2
respostas

Como instanciar objeto vazio?

No arquivo pensamento.component.ts, o @Input() pensamento : Pensamento é inicializado com informações que não são usadas. Se eu retiro, as informações o VSCode sugere usar undefined, ficando assim @Input() pensamento : Pensamento | undefined, mas apresenta erro de compilação no método larguraPensamento por causa do uso deste undefined (Object is possibly 'undefined'.ts(2532)) Como posso resolver?

2 respostas

Olá Marco, tudo bem?

Uma opção seria tentar a seguinte abordagem: colocar o @Input() pensamento : Pensamento | undefined, como você mencionou. E, para resolver o erro de compilação, você pode fazer adicionar uma verificação no método larguraPensamento(), assim:

larguraPensamento(): string {
      if(this.pensamento && this.pensamento.conteudo.length >= 256) {
        return 'pensamento-g'
      }
      return 'pensamento-p'
  }

No arquivo pensamento.component.html vão surgir alguns erros. Você pode resolver adicionando o operador de navegação segura (?) em todas as interpolações onde precisar acessar as propriedades do objeto, assim: {{ pensamento?.modelo }}, {{ pensamento?.conteudo }}, {{ pensamento?.autoria }} e {{ pensamento?.id }}.

Espero ter ajudado, bons estudos!

É melhor fazer dessa maneira com undefined ou deixar valores padrões mesmo ?

Vi essa maneira aqui: @Input() pensamento: Pensamento = {} as Pensamento;