Funkcja splice przyjmuje indeks, w którym miejscu chcemy dodać element (tutaj dodajemy 1, bo chcemy umieścić nowy element za Lemon). Drugi parametr to 0 informujemy w ten sposób metodę slice, że... nie chcemy usuwać żadnego element (do kasowania także służy ta metoda!). I na koniec w trzecim parametrze przekazujemy parametr, jaki chcemy dodać do tablicy.
Ponieważ w funkcji displayPersonInfo oznaczyliśmy parametr person jako opcjonalny, dostaniemy komunikat o błędzie przy próbie kompilacji. Próbujemy się dostać do właściwości obiektu (parametru), który może w ogóle nie zostać przekazany.
error TS2532: Object is possibly 'undefined'.
A co jeśli mam gwarancję, że do tej funkcji zawsze zostanie przekazany właściwy obiekt?
Operator !
Istnieje operator w TypeScript dzięki, któremu informujemy TS, że wiemy, co robimy. Dajemy gwarancję, że zostanie tam przekazany obiekt. Oto zapis:
Operator ! to tzw.: non-null assertion. Usuwa on z danego typu wartości null lub undefined informując TypeScript "puste" wartości nie zostaną przekazane.
Innym przykład użycia tego operatora to rozwiązanie poniższego problemu. To jest przykład z Angulara: