#webdev #typescript Na samym dole Object is possibly 'null'. mimo tego że sprawdzam ifem, że nie jest null. Z tego co rozumiem to jakiś third-party code może zmienić wartość salary między ifem, a operacją i dlatego typescript zwraca error. Zgadza się?
@Alodnog: nie znam sie na tym w ogóle, ale gdzie tam w definicji users masz pole albo index "user" Bo do tego sie odnosisz szukajac po id = 1, stad masz nulla może
@Rst00: Dalej ten sam error. @coachu: Dalej ten sam error. Btw. dlaczego users miałoby być null? A users[index] rzeczywiście może być undefined, ale typescript tego nie widzi. @hesus: Wtedy wywali runtime error, ale dla typescripta wszystko gra i users[johnIndex] jest typem User. @ImperiumCienia: Co masz na myśli? findIndex to pętla, która daje dostęp do każdego usera. @implossive: Dlaczego users może być nullem? Przecież to array. A
@Alodnog: Bo typ != wartość? Nie znam się na TS, ale np. w javce możesz napisać coś int[] array = null; a następnie zrobić array.length. No i tutaj array jest typu int[], ale wartość arraya to null. Ah, problem jest z salary i typem number | null
@Rst00: Może wszedłeś ze starego linku, który usunąłem, ale tak właśnie zrobiłem wyżej. A jeśli chodzi o twój kod to chyba lepiej po prostu w ifa wrzucić johnIndex !== -1, bo wpisanie z palca 0 traci sens (równie dobrze mógłbym zrobić const johnIndex = 0; ( ͡°͜ʖ͡°)
@implossive: W TS tak to nie działa, nie przypiszesz nulla do zmiennej typu array. Jedynie sprawdzenie czy istnieje element users[index] ma sens, ale nie na tym polega tutaj problem. I tak, zmienienie tego na number rozwiązało by problem, ale nie w tym rzecz hahah. To tylko taki przykład problemu dla uproszczenia, w realnej aplikacji wygląda to inaczej
@Alodnog: Kwestia tego co chcesz osiągnąć. Własnie w tym przypadku zmiana na number jest imo jak najbardziej sensownym rozwiązaniem. Jedyny usecase dla Twojego salary to zwiększenie o 1k, to też nie ma sensu w ogóle wrzucać tam | null.
Na samym dole
Object is possibly 'null'.
mimo tego że sprawdzam ifem, że nie jest null.Z tego co rozumiem to jakiś third-party code może zmienić wartość
salary
między ifem, a operacją i dlatego typescript zwraca error. Zgadza się?if(typeof users[johnIndex].salary !== null)
Komentarz usunięty przez autora
@coachu: Dalej ten sam error. Btw. dlaczego users miałoby być null? A users[index] rzeczywiście może być undefined, ale typescript tego nie widzi.
@hesus: Wtedy wywali runtime error, ale dla typescripta wszystko gra i
users[johnIndex]
jest typemUser
.@ImperiumCienia: Co masz na myśli?
findIndex
to pętla, która daje dostęp do każdego usera.@implossive: Dlaczego users może być nullem? Przecież to array. A
Komentarz usunięty przez autora
https://www.typescriptlang.org/play?#code/C4TwDgpgBAqgzhATlAvFA3gKClAlgEwC4o5hFcA7AcwG5soKBDAWwmNPOrpzkYBtGiEMQoBXZgCMkUAD4NRfPnQC+dTAGMA9hVJRRCRHGLwkAbQC6qKKfpYcOAsQBEARicAaejiatnAKU0ACwoPLxJ+QWEoFwAGOJj6ZU8cO3tHKCcAJlD7BhY2DIAVTWYc+14BIREFPkTPczUtHWAoACsgigBJCnwIAA8rfSQ4ADoAM0p8bt6+gAoh5BQAPj0DEYJUFDRXJwBKNVwxqHmDOFN24On+8xGKyKgAQi35RV2MegWzi66e69uIoRQADUaFicRUmEhAHoAFRQADKmj4omAuG0hA02l0d0BaE+5w6Vz6NxxIAOR1mpMezzEr3eOHx3yJJIBICsVKB0XiEJhUKAA
johnIndex !== -1
, bo wpisanie z palca 0 traci sens (równie dobrze mógłbym zrobićconst johnIndex = 0;
( ͡° ͜ʖ ͡°)users[index]
ma sens, ale nie na tym polega tutaj problem. I tak, zmienienie tego nanumber
rozwiązało by problem, ale nie w tym rzecz hahah. To tylko taki przykład problemu dla uproszczenia, w realnej aplikacji wygląda to inaczej