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?

- Rejestracja:ponad 6 lat
- Ostatnio:ponad 3 lata
- Postów:255

- Rejestracja:około 7 lat
- Ostatnio:ponad rok
- 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:około 12 lat
- Ostatnio:10 miesięcy
- 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:ponad 6 lat
- Ostatnio:ponad 3 lata
- Postów:255
W takim razie jaki byłby usecase na wykorzystanie interface (@czubeka2 już zaczął o tym mówić) a jaki na model? Czy to jest kwiestia już bardziej deva, co mu wygodniej, czy są jakieś restrykcyjne zasady kiedy należy użyć interface a kiedy modelu?

- Rejestracja:około 12 lat
- Ostatnio:10 miesięcy
- 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.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.