1
resposta

Erro de lógica?

import { of } from 'rxjs';

function myFunc(number: number) { return number % 2 ? of('impar') : of('par') }

myFunc(10).subscribe(msg => alert(msg));

Nesse código, o ternário entraria na primeira opção, não? e retornaria impar, ou estou errado?

1 resposta

Oi Everton!

Vamos lá, o valor da expressão number % 2 retorna um número, que será ou 1 ou 0. O valor 1 é entendido como truthy, ou seja, ele equivale a true, mesmo não sendo um booleano e o 0 é um falsy pois apesar de não ser false, ele é interpretado como um. Teste no console os comandos true == 1 e false == 0 e você verá que ambos retornam true.

Sendo assim, caso o valor seja 1, ou seja, o número é impar, o ternário encara isso como true e retorna o primerio valor of("impar"). Caso ele seja 0, o ternário vê um false e retorna o segundo valor of("par").

Leia este artigo da MDN sobre valores truthy caso queira saber um pouco mais.

Espero ter ajudado! Qualquer outra dúvida pode postar aqui. :)