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:
Mając już model i formularz, możemy wypełnić go danymi.
Sposób 1: Metoda setValue
Metoda setValue pochodzi z klasy FormGroup. Jedynym wymaganym parametrem tej metody jest obiekt, który odzwierciedla strukturę naszego formularza. Czyli obiekt musi składać się z takiej samej struktury jak model danych formularza. Jeśli spróbujemy przekazać coś innego: na przykład będzie brakować jakiegoś pola, to operacja się nie uda.
Ta metoda jest bardzo podobna do poprzedniej także pochodzi z FormGroup, ale jest pewna różnica. Można do niej przekazać obiekt, którego struktura nie jest identyczna jak model danych formularza. Na przykład jeśli przekażemy do wypełnienia tylko jedno pole, to operacja się uda.