glaucia86 / curso-typescript-zero-to-hero

Repositório responsável pelo Curso de TypeScript - Zero to Hero

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

passando o object como tipo diretamente pra função

henriquesati opened this issue · comments

Se eu passo o type object pro funcionario e tento acessar a string nome, recebo o erro que a propriedade nome nao existe no tipo
mas se eu declarar o type do funcionario como typeof pessoa (um objeto criado com a propriedade nome) para de dar erro. Por que isso acontece?
exemplo 1: function onboarding01 (funcionario: object) {
return funcionario.nome
}
exemplo 2: function onboarding02 (funcionario: typeof pessoa) {
return funcionario.nome
}

Olá Pedro, o typeof acaba sendo requerido porque você está referenciando de forma direta ao parâmetro funcionario um objeto pessoa já instanciado. Para não ser necessária a utilização do typeof você pode usar o padrão de interface.

Exemplo:
`interface ipessoa {
nome: string
}

function onboarding(funcionario: ipessoa) {
return funcionario.nome;
}

const pessoa = {
nome: 'John Doe'
}
console.log(onboarding(pessoa));`

Já na questão de você não conseguir acessar funcionario.nome quando usado o (funcionario: object) é porque, apesar de pessoa ser um objeto, o parâmetro não reconhece object como o seu objeto pessoa declarado. Pensa assim, "quem é object?", é pessoa certo? O que acontece é que a função precisa conhecer quem ou o que é o object, por isso você precisa passar de forma explícita o nome do objeto que nesse caso é pessoa.

Espero ter ajudado.

Muito obrigada pela resposta: @brunosansp

Vou deixar o teu exemplo mais organizado aqui

interface IPessoa {
  nome: string
}

function onboarding(funcionario: IPessoa) {
  return funcionario.nome;
}

const pessoa = {
  nome: 'John Doe'
}

console.log(onboarding(pessoa));