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?
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?
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. :)