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));