Interfejsy generyczne
Część sekcji Wprowadzenie do TypeScript ścieżki JavaScript w Coddy. Lekcja 61 z 73.
Podobnie jak możesz tworzyć funkcje generyczne, możesz również tworzyć interfejsy generyczne. Pozwala to określić strukturę obiektu, zachowując elastyczność i możliwość ponownego wykorzystania typów niektórych właściwości.
Oto jak utworzyć interfejs generyczny, używając tej samej składni parametru typu:
interface Container<T> {
value: T;
isEmpty: boolean;
}<T> po nazwie interfejsu tworzy parametr typu, którego można używać w całej definicji interfejsu. W tym przykładzie właściwość value będzie miała typ określony podczas używania interfejsu, natomiast isEmpty pozostaje niezmiennie typu boolean.
Gdy korzystasz z interfejsu generycznego, określasz konkretny typ w nawiasach ostrych:
const stringContainer: Container<string> = {
value: "hello",
isEmpty: false
};
const numberContainer: Container<number> = {
value: 42,
isEmpty: false
};Wyzwanie
ŁatwyUtwórz generyczny interfejs o nazwie Result, który może przechowywać dane dowolnego typu wraz z informacją o powodzeniu.
Interfejs powinien mieć dwie właściwości:
successtypubooleandatatypuT(parametr typu generycznego)
Utwórz następujące obiekty, używając swojego interfejsu generycznego:
stringResulttypuResult<string>zsuccess: trueidata: "Operation completed"numberResulttypuResult<number>zsuccess: trueidata: 42booleanResulttypuResult<boolean>zsuccess: falseidata: falsearrayResulttypuResult<string[]>zsuccess: trueidata: ["item1", "item2", "item3"]
Utwórz funkcję generyczną o nazwie processResult, która:
- Używa parametru typu generycznego
T - Przyjmuje jeden parametr
resulttypuResult<T> - Zwraca komunikat tekstowy
- Jeśli
successma wartośćtrue, zwraca"Success: [data]" - Jeśli
successma wartośćfalse, zwraca"Failed: [data]"
Wyświetl następujące wyniki:
- Wyświetl wynik wywołania
processResultz argumentemstringResult - Wyświetl wynik wywołania
processResultz argumentemnumberResult - Wyświetl wynik wywołania
processResultz argumentembooleanResult - Wyświetl wynik wywołania
processResultz argumentemarrayResult - Wyświetl
stringResult.data
Spróbuj swoich sił
// TODO: Napisz tutaj swój kod
// Utwórz generyczny interfejs Result
// Utwórz obiekty przy użyciu interfejsu Result
// Utwórz generyczną funkcję processResult
// Wyświetl wymagane wynikiTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Wprowadzenie do TypeScript
1Pierwsze kroki z TS
Czym jest TypeScript?Dlaczego warto używać TypeScript?Twój pierwszy kod w TypeScriptProces kompilacji i błędyPodsumowanie: wprowadzenie do TS4Praca z funkcjami
Typowanie parametrów i wartości zwracanychTypowanie funkcji strzałkowychTyp zwracany „void”Opcjonalne parametry z „?”Domyślne wartości parametrówTypowanie parametrów restDefiniowanie typów funkcjiPodsumowanie: tworzenie typowanych funkcji2Podstawowe typy
Podstawowe typy: str, num, booleanTyp „any”: furtka awaryjnaTyp „unknown”Praca z „null” i „undef”Wnioskowanie o typach w praktyceJawne adnotacje typówPowtórka: ćwiczenia z podstawowych typów5Typy: aliasy, unie i przecięcia
Aliasy typów prostychTypy unii („|”)Praca z typami uniiTypy literałoweTypy przecięć („&”)Łączenie aliasów typówPodsumowanie: zaawansowane kombinacje typów3Struktury danych: tablice i krotki
Tablice typowaneModyfikator "readonly" dla tablicCzym jest krotka?Deklarowanie i uzyskiwanie dostępu do krotekDestrukturyzacja krotekKrotki tylko do odczytuWielowymiarowe tablice typowaneOperator spread w tablicachPodsumowanie: tablice i krotki6Typowanie obiektów i interfejsy
Adnotacje typów obiektów w miejscu użyciaAliasy typów dla obiektówWprowadzenie do interfejsówInterfejsy a aliasy typówWłaściwości opcjonalne i tylko do odczytuRozszerzanie interfejsów i typówDodawanie metod do interfejsówPodsumowanie: definiowanie struktur obiektów9Typy generyczne: pierwsze spojrzenie
Problem rozwiązywany przez typy generyczneTworzenie generycznej funkcji tożsamościowejKorzystanie z funkcji generycznejTablice generyczneInterfejsy generycznePodsumowanie: ćwiczenie z funkcją generycznąPoćwicz samodzielnie: Edytor online TypeScript