4. Do czego służy operator `!` na końcu zmiennej?

Jeśli zmienna jest optional, co znaczy że poza wskazanym typem może przechowywać również undefined, to wykrzyknik na końcu upewnia kompilator, że w tym miejscu zmienna zawsze będzie przechowywała określoną wartość inną niż undefined.

type RandomType = { optionalValue?: string } const rt: RandomType = {optionalValue: "random"}; rt.optionalValue.length // 'rt.optionalValue' is possibly 'undefined'. rt.optionalValue!.length // no error thrown.

W powyższym przykładzie zastosowanie ! jest bezpieczne, ponieważ istnieje pewność, że wartość optionalValue zawsze jest różna od undefined.

Operator ten powinien być wykorzystywany z rozwagą, ponieważ jeśli wartość jednak będzie równa undefined, kod narażony jest na błędy typu Cannot read properties of undefined.

type RandomType = { optionalValue?: string } const rt: RandomType = {}; rt.optionalValue!.length // Cannot read properties of undefined (reading 'length')
devFlipCards 2024

Akceptujesz cookies?

Cookies to niewielkie fragmenty danych zapisywane lokalnie na twoim urządzeniu. Pomagają w funkcjonowaniu naszej strony - zapisują Twoje ustawienia strony takie jak motyw czy język. Poprawiają funkcjonowanie reklam i pozwalają nam na przeprowadzanie analityki odwiedzin strony. Korzystając ze strony zgadasz się na ich wykorzystanie.