Acho que essa feature é uma daquelas que muda toda a forma programação da comunidade do JS! Igual ocorreu com arrow functions, spread operators e muitas outras! Com certeza o hype é gigante!! Parabéns pelo vídeo!!!
Pra galera que ficou pensando como isso era feito antes. No time em que atuo, criamos uma entidade/class/FactoryFunction para cada item desse objeto, afim de replicar a estrutura de dados que retorna do backend. e para cada item, fazemos um || caso não retorne o valor. class Artist { constructor(data = {}) { this.gender = data.gender || 'Nenhum gênero informado'; } } mas para os Ifs simples da vida, Optional chaining é muito lindo
Bem legal o vídeo. Só uma dica de inglês: gender significa gênero no sentido de gênero sexual (masculino, feminino etc). Pra gêneros musicais geralmente se usa genre ;) Keep up the good work!
outra opção igualmente medonha: let data = {}; data = response.data; // assumindo que os dados venham de uma API (((data || {}).users || [] ) [0] || {}).favorite_artists ou faz um object destructuring que tbm fica chavoso
ta precisando de um suporte para o microfone , ta capitando muito o Jaydson batendo na mesa hahahaha , mas como sempre otimo video , sempre transendo de forma muito mais palatavel as novidades do JS
Uma dúvida, no Node 14.3.0 não aparece mais aquele warning do import pra os módulos dizendo que é uma feature experimental. Olhei na documentação e ainda está experimental, sabe dizer o motivo?
Pelo que entendi na doc é pq agora o "experimental" está vindo como padrão, saca? Como em breve isso estará estável acho que já tiraram o warning. nodejs.org/dist/latest-v14.x/docs/api/esm.html
Tem várias Mateus, não só libs, algumas técnicas também resolvem o problema. Como o Lucas citou aqui, ele usa o lodash (lodash.com/), eu já usei também, mas ao longo do tempo já usei outras também, baseadas em schemas, etc. Vale citar também TypeScript e outros subsets ou libs para tipos que ajudam isso em tempo de compilação. O bom é que agora não precisamos mais nos preocupar com isso :)
Que legal,@@jaydson. Não sabia que havia esta funcionalidade no lodash. Já usei o optional chaining no Ts porém no dia a dia infelizmente ainda não posso utilizar nem Ts e nem o ES2020, então terei que usar a funcionalidade do lodash mesmo. Muito obrigado! :D
UMA DÚVIDA! Se eu tiver um objeto: let obj = { _users: [ { name: 'A1', info: { i1: 'informacao' } } ] E tentar: obj.users[0].info?.i1 Vai retornar erro, certo? Então o ideal seria eu testar em todos os níveis? Tipo: obj?.users?[0]?.info?.i1 Seria algo assim?
Pra um trem desses de erro eu faria assim let data = null; try{ data = obj.arrat[0].property.array.... } catch() { data = 'not found'; } console.log(data)
sou iniciante sua didatica é top de mais eu que não entendo mt coisa , ja aprendi mt só com esse video
Acho que essa feature é uma daquelas que muda toda a forma programação da comunidade do JS! Igual ocorreu com arrow functions, spread operators e muitas outras! Com certeza o hype é gigante!! Parabéns pelo vídeo!!!
Boa Diego! Bem isso, JS cada vez mais com features que nos facilitam a vida né
JS evoluindo cada vez mais e facilitando mais ainda a vida da gente!
Esse cara parece um tipo que a gente gostaria de fazer amizade haha super gente boa.
Absurdamente útil, parabéns pelo video
Pra galera que ficou pensando como isso era feito antes.
No time em que atuo, criamos uma entidade/class/FactoryFunction para cada item desse objeto, afim de replicar a estrutura de dados que retorna do backend.
e para cada item, fazemos um || caso não retorne o valor.
class Artist {
constructor(data = {}) {
this.gender = data.gender || 'Nenhum gênero informado';
}
}
mas para os Ifs simples da vida, Optional chaining é muito lindo
Ótimo vídeo, muito bem explicado
Opa, valeu Fabio!
Sou desenvolvedor e não tenho interesses e objetivos com JavaScript, mas assisto seus videos por conta de seu humor e didática. ;) Rsrsrs...
Ótimo vídeo!! Parabéns !!
Estou começando meus estudos recentemente e este canal está me ajudando demais.
Agradeço a todos , muito obrigado mesmo 👍
Que ótimo saber disso Wagnão!
Rapaz, a explicação foi tão boa que eu como iniciante entendi. Obrigado
Pô, que bom Gleiton!
"Pra mim machine learning é um monte de if". kakakakakakak, muito bom!! Excelente conteúdo e trilha sonora!!
AHahahah valeu Iago!
Negocio eh aprender node com o faustão!!! m.th-cam.com/play/PLOLxKcKOmmhTsT7YeLi53QGs3sRQlkwWV.html
Interessante ver as novidades do es20, tem isso em kotlin há muito tempo, bom ver que estão correndo atrás
SENSACIONAL!!! Esses aninhamentos explodem a cabeça kkkkk js sempre evoluindo!! top
Ahahah sim! Agora fica mais fácil não se perder
Gostei! Sou muito fraco em JS.
Eu uso o lodash (_.get) para pegar valores
muito boa a explicação.
Valeu Alex! Que bom que curtiu
Boa!
Ótimo conteúdo
Valeu Guilherme!
Nossa, que maravilha está chegando isso, porque é foda depender de libs ou ficar fazendo vaaaaaaaaaarios if's para validações!
É um alívio mesmo né Marcus. Chega daquele macarrão de ifs ahahah
Um colírio para os olhos dos devs que fazem aninhamentos bizarros
Ahahah verdade
Jason ...haha rsr boa !!
Quem desenvolvia para ie7 se emociona a cada evolução do js hahahaha
Heheh verdade Luiz. Até hoje eu sonho com IE6 e IE7
@@jaydson os novos programadores não sabem o que é programar para o IE6. kkkkkkkkkkkkkkkkkk
Muiitoo bom
Valeu Lucas!
Uso muito isso no C#, sentia muita falta disso no js
Podia ter mostrado executando um método também =D
meuArray?.forEach(...)
Ah verdade Alberto! Muito útil poder usar em chamada de métodos né?
Tem vários usos e realmente facilita bastante
Q massa q tem no C#! Eu uso muito no Kotlin tb
val mapped = myArray?.map { ... } ?: arrayOf(item1, item2, ...)
Valeu, Jaydson. Ótimo conteúdo e com a fonte maior agr.. rsrs
Boa Luiz! Valeu!
Hehhe sim, agora ficou bom né?
show
Esse else no final poderia até fazer um forEach para mostrar qual key que está invalida
Boa Jorge :)
"Machine Learning é um monte de ir kkkkkkkkk", ótimo conteúdo.
HAhaah :p
Bem legal o vídeo. Só uma dica de inglês: gender significa gênero no sentido de gênero sexual (masculino, feminino etc). Pra gêneros musicais geralmente se usa genre ;)
Keep up the good work!
Ahahahah mas que cagada! 🤦
Pior que fiz o código na hora e fiquei pensando que tinha algo estranho naquele gender. Valeu Luiz!
Explicação foi boa, mas um pouco demorada, acho que um vídeo de 3 a 4 minutos no máximo já seria suficiente.
outra opção igualmente medonha:
let data = {};
data = response.data; // assumindo que os dados venham de uma API
(((data || {}).users || [] ) [0] || {}).favorite_artists
ou faz um object destructuring que tbm fica chavoso
ta precisando de um suporte para o microfone , ta capitando muito o Jaydson batendo na mesa hahahaha ,
mas como sempre otimo video , sempre transendo de forma muito mais palatavel as novidades do JS
Valeu Cris! Eu gravei dois vídeos no mesmo dia e fiz essa cagada de ficar batendo na mesa :/
Nos próximos já tá resolvido isso. Valeu!
Uma dúvida, no Node 14.3.0 não aparece mais aquele warning do import pra os módulos dizendo que é uma feature experimental. Olhei na documentação e ainda está experimental, sabe dizer o motivo?
Pelo que entendi na doc é pq agora o "experimental" está vindo como padrão, saca?
Como em breve isso estará estável acho que já tiraram o warning.
nodejs.org/dist/latest-v14.x/docs/api/esm.html
Gender não, Jaydson! É Genre! hehe Massa o vídeo. Abraço
eheh sim, algumas pessoas já avisaram aqui nos comentários. Falha total, no próximo eu arrumo! ahahah
Enxugou o código!! 👍
👍👍
if (Array.isArray(data.users[0].favorite_artists))...
Qual biblioteca servia para este fim??
Tem várias Mateus, não só libs, algumas técnicas também resolvem o problema.
Como o Lucas citou aqui, ele usa o lodash (lodash.com/), eu já usei também, mas ao longo do tempo já usei outras também, baseadas em schemas, etc.
Vale citar também TypeScript e outros subsets ou libs para tipos que ajudam isso em tempo de compilação.
O bom é que agora não precisamos mais nos preocupar com isso :)
Que legal,@@jaydson. Não sabia que havia esta funcionalidade no lodash. Já usei o optional chaining no Ts porém no dia a dia infelizmente ainda não posso utilizar nem Ts e nem o ES2020, então terei que usar a funcionalidade do lodash mesmo. Muito obrigado! :D
UMA DÚVIDA!
Se eu tiver um objeto:
let obj = { _users: [ { name: 'A1', info: { i1: 'informacao' } } ]
E tentar:
obj.users[0].info?.i1
Vai retornar erro, certo?
Então o ideal seria eu testar em todos os níveis?
Tipo:
obj?.users?[0]?.info?.i1
Seria algo assim?
AHH... Parabéns pelo conteúdo! hehe
Muito boommm!!!
Isso Arlan, pode testar todos níveis.
Para acessar valores de arrays com optional chaining aí é assim:
obj.users?.[0]
@@arlandantas Valeuuuu!
Pra um trem desses de erro eu faria assim
let data = null;
try{
data = obj.arrat[0].property.array....
} catch() {
data = 'not found';
}
console.log(data)
isso é o elvis operator do angular kkkkk
genre*
Poucos notoram o meu Easter egg Ahuahuhauhau
Zoera, foi cagada mesmo
Irrelevante pro propósito do vídeo, q ficou muito bem exemplificado, parabéns pelo conteúdo!
Cara agente gosta de umas banda parecidas em kkk, pegunta nada haver com o conteudo vc curte Down ?
nunca fiz esse if pra resolver esse problema... acho que a comunidade java script fica procurando chifre na cabeça de cavalo... 7:00
lodash _.get() é sucesso kkkkk
Quebrou o enter kkkkkkkkkk
:p