Alodnog
#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ę?
1
  • Najlepsze
  • Wszystkie komentarze
Rst00
@Alodnog:

if(typeof users[johnIndex].salary !== null)
1
hesus
@Alodnog: a co jeśli johnIndex wyjdzie -1?
1
implossive
@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.
1
coachu
coachu
Sprawdz czy users nie jest null i czy users[index] nie jest null
0
ImperiumCienia
@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
0
implossive
users[johnIndex].salary potencjalnie wołasz salary na nullu, potencjalnie także users może być nullem
0
Alodnog
@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ć
0
Alodnog
0
Rst00
0
implossive
@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
0
Alodnog
@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; ( ͡° ͜ʖ ͡°)
0
implossive
@Alodnog: Szczerze to ja bym zmienił salary na salary: number bez nulla.
0
Alodnog
@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
0