84 hasła · 6 kategorii
Dokumentacja TypeScript
Typy podstawowe, interfejsy, unie, generyki i wszystkie typy narzędziowe. Przy każdym przykładzie widzisz typ, który wylicza kompilator.
84 hasła
Typy podstawowe
Typy prymitywne, tablice, krotki, enumy, any, unknown i never.
- string, number, booleanPodstawowe typy prymitywne: tekst, liczby i wartości logiczne.
- Tablice: number[] i Array<T>Typy tablic, w których wszystkie elementy mają ten sam typ.
- Krotki (tuple)Tablice o stałej długości, w których każda pozycja ma własny typ.
- enumNazwany zestaw stałych wartości, liczbowych lub tekstowych.
- anyTyp wyłączający sprawdzanie: wartość może być czymkolwiek.
- unknownBezpieczny odpowiednik any: wartość nieznanego typu, której trzeba najpierw sprawdzić.
- neverTyp wartości, która nigdy nie wystąpi: funkcji, które nie kończą się normalnie, i niemożliwych przypadków.
- voidTyp zwracany przez funkcje, które nic nie zwracają.
- null i undefinedTypy oznaczające brak wartości, kontrolowane przez strictNullChecks.
- Typy literałoweTypy dopuszczające tylko konkretne wartości, np. "easy" | "hard".
- Typy obiektówOpis kształtu obiektu: jakie ma pola i jakiego typu.
- Typy funkcjiTypowanie parametrów, wartości zwracanej i samych funkcji jako wartości.
- Wnioskowanie typówAutomatyczne ustalanie typów przez kompilator bez pisania adnotacji.
Interfejsy i klasy
Opisywanie kształtu obiektów, dziedziczenie i modyfikatory dostępu.
- interfaceNazwany opis kształtu obiektu, który można rozszerzać i łączyć.
- typeAlias typu: nazwa dla dowolnego typu, także unii, krotek i typów złożonych.
- Pola opcjonalne (?)Właściwości, które mogą, ale nie muszą występować w obiekcie.
- readonlyModyfikator blokujący zmianę pola po utworzeniu obiektu.
- Sygnatura indeksuOpis obiektów o dowolnych kluczach i wartościach jednego typu.
- extends (interfejsy)Rozszerzanie interfejsu o nowe pola, na bazie istniejącego.
- implementsDeklaracja, że klasa spełnia kontrakt opisany interfejsem.
- public, private, protectedModyfikatory dostępu określające, skąd można używać pól i metod klasy.
- abstract classKlasa bazowa, której nie można utworzyć bezpośrednio, z metodami do uzupełnienia przez potomków.
- Przeciążenia funkcjiKilka sygnatur jednej funkcji: typ wyniku zależy od tego, z jakimi argumentami ją wywołasz.
- DekoratoryFunkcje przypinane znakiem @ do klas i ich elementów, które rozszerzają albo zmieniają ich działanie.
- declare i pliki .d.tsOpisywanie typów czegoś, co istnieje poza twoim kodem TypeScript: zmiennych globalnych, bibliotek JavaScript i modułów.
Unie i zawężanie
Łączenie typów, strażnicy typów, asercje i satisfies.
- Unia (A | B)Typ, który może być jednym z kilku typów.
- Przecięcie (A & B)Typ łączący wszystkie pola kilku typów jednocześnie.
- Zawężanie typówUstalanie dokładniejszego typu wartości na podstawie sprawdzeń w kodzie.
- Strażnicy typów (value is T)Własne funkcje sprawdzające, które zawężają typ w miejscu wywołania.
- Unie rozróżnialneUnie obiektów ze wspólnym polem-etykietą, które pozwala łatwo odróżnić warianty.
- typeof (w typach)Pobiera typ zmiennej lub wartości, żeby użyć go w innym miejscu.
- instanceofZawęża typ do klasy, sprawdzając, czy obiekt został przez nią utworzony.
- Operator inZawęża typ unii obiektów, sprawdzając, czy obiekt ma daną właściwość.
- Asercja typu (as)Wskazanie kompilatorowi typu wartości, gdy wiesz więcej niż on.
- satisfiesSprawdza, czy wartość pasuje do typu, nie zmieniając typu wywnioskowanego.
- as constZamraża literały w wyrażeniu: najwęższe typy i pola tylko do odczytu.
- Asercja non-null (!)Wykrzyknik po wyrażeniu usuwa z typu null i undefined bez sprawdzania.
- import typeImport samych typów, który w całości znika z wygenerowanego JavaScriptu.
- usingDeklaracja zasobu, który zostanie automatycznie zwolniony przy wyjściu z bloku, nawet po błędzie.
- this jako typTyp this oznacza obiekt, na którym wywołano metodę, a parametr this opisuje kontekst zwykłej funkcji.
Generyki i typy zaawansowane
Typy z parametrami, keyof, typy warunkowe, mapowane i szablonowe.
- Generyki <T>Typy i funkcje z parametrem typu, działające dla wielu typów bez utraty precyzji.
- Ograniczenia generyków (extends)Wymaganie, żeby parametr typu spełniał określony kształt.
- keyofTworzy unię nazw kluczy danego typu obiektu.
- Typy indeksowane T[K]Pobiera typ pola z innego typu, tak jak odczyt właściwości z obiektu.
- Typy warunkoweTypy wybierane na podstawie warunku: T extends U ? X : Y.
- inferWyciąga typ z wnętrza innego typu w typie warunkowym.
- Typy mapowaneTworzą nowy typ obiektu, przekształcając każdy klucz innego typu.
- Typy szablonoweTypy tekstowe budowane ze szablonów, jak `${A}-${B}`.
- Domyślne parametry typuWartość, jaką przyjmuje parametr typu, gdy nie zostanie podany ani wywnioskowany.
Typy narzędziowe
Wbudowane typy, które przekształcają inne typy: Partial, Pick, Omit i reszta.
- Partial<Type>Tworzy typ, w którym wszystkie właściwości są opcjonalne.
- Required<Type>Tworzy typ, w którym wszystkie właściwości są wymagane.
- Readonly<Type>Tworzy typ, w którym wszystkie właściwości są tylko do odczytu.
- ReadonlyArray<Type>Tablica tylko do odczytu: bez push, sort i przypisań po indeksie.
- Pick<Type, Keys>Tworzy typ zawierający tylko wybrane właściwości innego typu.
- Omit<Type, Keys>Tworzy typ bez wybranych właściwości innego typu.
- Record<Keys, Type>Tworzy typ obiektu o podanych kluczach, w którym każda wartość ma ten sam typ.
- Exclude<UnionType, ExcludedMembers>Usuwa z unii typy zgodne z podanym typem.
- Extract<Type, Union>Zostawia w unii tylko typy zgodne z podanym typem.
- NonNullable<Type>Usuwa z typu null i undefined.
- ReturnType<Type>Pobiera typ wartości zwracanej przez funkcję.
- Parameters<Type>Pobiera typy parametrów funkcji jako krotkę.
- Awaited<Type>Pobiera typ wartości, którą da await na obietnicy.
- InstanceType<Type>Pobiera typ obiektu tworzonego przez konstruktor klasy.
- ConstructorParameters<Type>Pobiera typy parametrów konstruktora klasy jako krotkę.
- Uppercase, Lowercase, Capitalize, UncapitalizeWbudowane typy zmieniające wielkość liter w typach tekstowych, np. "gold" na "GOLD".
- NoInfer<Type>Blokuje wnioskowanie parametru typu z danego miejsca, żeby typ ustalały inne argumenty.
Konfiguracja tsconfig
Najważniejsze opcje kompilatora w pliku tsconfig.json.
- "strict"Włącza zestaw najważniejszych, rygorystycznych sprawdzeń kompilatora.
- "target"Wersja JavaScriptu, do której kompilator zamienia kod.
- "lib"Wybiera wbudowane typy środowiska: wersję JavaScriptu, API przeglądarki i pojedyncze nowości języka.
- "jsx"Określa, co kompilator robi ze składnią JSX w plikach .tsx.
- "module"Format modułów w wygenerowanym kodzie i sposób rozumienia importów.
- "moduleResolution"Algorytm, którym kompilator odnajduje pliki wskazane w importach.
- "paths"Aliasy ścieżek w importach, np. @/components zamiast ../../components.
- "noImplicitAny"Zgłasza błąd, gdy kompilator musiałby po cichu przyjąć typ any.
- "strictNullChecks"Traktuje null i undefined jako osobne typy, wymuszając ich obsługę.
- "noUncheckedIndexedAccess"Dodaje undefined do typu odczytu po indeksie, bo elementu o takim indeksie może nie być.
- "esModuleInterop"Ułatwia importowanie pakietów CommonJS składnią modułów ES.
- "verbatimModuleSyntax"Importy bez słowa type zostają w JavaScripcie bez zmian, więc importy typów trzeba oznaczać jawnie.
- "isolatedModules"Pilnuje, żeby każdy plik dało się przetłumaczyć na JavaScript osobno, bez wiedzy o reszcie projektu.
- "outDir" i "rootDir"Folder, do którego trafia skompilowany kod, i folder źródeł.
- "declaration"Generuje pliki .d.ts z typami obok skompilowanego JavaScriptu.
- "sourceMap"Generuje mapy źródeł .js.map, dzięki którym debuger pokazuje kod TypeScript zamiast wygenerowanego JavaScriptu.
- "include" i "exclude"Które pliki kompilator bierze pod uwagę, a które pomija.
- "skipLibCheck"Pomija sprawdzanie błędów w plikach deklaracji .d.ts, co przyspiesza kompilację.