Wpis z mikrobloga

Jakie są dobre praktyki w sprawie nulli i undefined? Jedne funkcje zwracają nulla, inne undefined, podobnie jest z argumentami, czasem trzeba przekazać null, a czasem undefined (mowa o kodzie niezależnym ode mnie). Później powstają takie kwiatki jak type A = string | null | undefined i później porównuj z jednym i drugim lub podwójnym ==. Czy wobec tego dobrym pomysłem jest używanie możliwie jednej wartości np. zakrywać nullem wszystkie undefined: return array.find(x => x.done) ?? null ? Tylko że jak później się okaże, że trzeba do obcej funkcji przekazać string | undefined, a ja mam x: string | null to teraz w drugą stronę będę pisać fn(x ?? undefined). Jest na to dobry patent?

#javascript #typescript #webdev
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ToJestNiepojete: Jak to aż tak gigantyczny problem to sobie napisz funkcje helpera coś ala

function ifUndefinedMakeNull(variable) {
return typeof variable === 'undefined' ? null : variable
  • Odpowiedz
@ToJestNiepojete: Ew. mógłbyś sobie zrobić funkcje pakującą oryginalną funkcje która będzie przyjmować null/undefined i będziesz sobie na podstawie parametru decydował co powinno być dla takiego casu i używać kopi, taki na szybko przykład

np.

function oryginal(a) { //to przykładowo ciało importowanej
  • Odpowiedz
@ToJestNiepojete: jak to kod niezależny od ciebie to lipa. W swoim kodzie ja stosuje taki pattern że undefined jest zarezerwowany do braku wartości (nie mylić z pustą wartością) i co do zasady powinien być zwracany TYLKO przez API samego języka. Wszelki kod pisany przez programistów powinien operować tylko na nullach (no i do tego ew. takie rzeczy jak null object pattern)
  • Odpowiedz
Przykladowo, document.querySelector moze zwrocic Ci node albo null gdy nie znajdzie. Null to jest swiadome zwrocenie pustego wyniku.


@larvaexotech: Dla odmiany Array.find zwróci undefined gdy niczego nie znajdzie. Ja nie widzę reguły.

Czy w takim razie jak przychodzi odpowiedź z backendu i np. user nie wybrał płci to będzie gender null? Niektóre API pomijają pola, których nie ma. Czyli w zależności od sposobu odpowiedzi z api będziesz w aplikacji
  • Odpowiedz