Czym są interface w typescript i dlaczego chciałbym ich używać programując w Angularze? Ktoś mógłby szczegółowo ale i rzeczowo i praktycznie wytłumaczyć ideę intrefejsów?
Typescript - interface
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 46
Dzięki interfejsom w Typescripcie możesz sobie zdefiniować "typ" zmiennej. Można to w jakimś stopniu odnieść do klasy - definiujesz sobie interfejs, który zawiera w sobie określone atrybuty, więc gdy użyjesz go do deklaracji zmiennej to wiesz, że zawiera ona te same atrybuty, co użyty do jej deklaracji interfejs. To jest właśnie siła Typescripta - nie musisz pamiętać co w jakiej zmiennej siedzi - robi to za Ciebie interfejs.
EDIT: Jestem praktykiem, który uczył się Typescripta w trakcie developmentu, więc staram się wyjaśnić od strony praktycznej. Od teorii pewnie jeszcze ktoś tu się pojawi :D
- Rejestracja: dni
- Ostatnio: dni
- Postów: 53
Dodam od siebie, że interfejs pilnuje również typu danego atrybutu. Niejednokrotnie miałem sytuację gdzie zewnętrzny serwis zwracał np. string zamiast number. Musiałem zatem zaktualizować interfejs, a co za tym idzie kompilator wskazał mi miejsca w których wykonywałem na tym operacje arytmetyczne. Gdybym korzystał bezpośrednio z modelu, to znalezienie takich problemów mogło by być bardziej uciążliwe.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 53
Model powinien opisywać dane pochodzące z zewnętrznego systemu, natomiast interfejs wpisuje się w wewnętrzną wymianę danych wewnątrz aplikacji. Nie ma konieczności walidowania interfejsu, ponieważ zakładamy że jest on poprawny. Model z kolei należy zwalidować przed wykorzystaniem go w aplikacji.
Use case:
Dane pochodzą z naszego backendu i są opisywane przez model (lub nawet schema), nasza aplikacja konweruje je na interfejs wykorzystywany w serwisach/komponentach. W jakim celu natomiast jest dokonywana konwersja na intrfejs? Nasz backend jest wykorzystywany przez inne aplikacje, więc z powodów kompatybilności pola z wartościami numerycznymi są przechowywane jako string. My w aplikacji będziemy dokonywać operacji arytmetycznych na tych polach, więc chcemy aby ta wartość była typu number. Podczas konwersji do intrfejsu robimy operacje typu parseInt/parseFloat. Pozostałe segmenty aplikacji korzystają już z intrfejsu, który posiada przekonwertowane wartości.