Hej witajcie, chciałbym prosić o wytłumaczenie co oznacza to stwierdzenie - tzn nie rozumiem dlaczego zawsze będzie warunek logiczny "false", z kolei zmieniając zmienne "stałe" const. na let- warunek już nie bedzie wskazywał na błąd
const firstName = Symbol("name");
const secondName = Symbol("name");
if (firstName === secondName) {
// Can't ever happen
}
zmiana na poniższy kod już nie pokazuje błędu
let firstName = Symbol("name");
const secondName = Symbol("name");
const secondName2 = secondName ;
if (firstName === secondName) {
// Can't ever happen
}
// tu też bez błędu np
if (secondName2 === secondName) {
// Can't ever happen
}
rezultat "This condition will always return 'false' since the types 'typeof firstName' and 'typeof secondName' have no overlap." błąd jest oczywiście już podczas kompilacji tzn informuje mnie kompilator o tym, i tutaj zastanawiam się dlaczego to jest "false" a nie np true, skoro mamy dwie stałe zmienne jakby będące tym samym elementem, to jakby porównując ich referencje powinno zawsze być true.
Chyba że, właśnie z faktu że to obiekty i są to stałe do referencji ich referencja nigdy nie bedzie taka sama