Typescript

0.0(0)
studied byStudied by 0 people
GameKnowt Play
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/23

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

24 Terms

1
New cards

Czym jest TypeScript i jakie są jego główne zalety?

TypeScript to nadzbiór JavaScriptu, który dodaje statyczne typowanie.

Główne zalety to:

- Lepsza czytelność i utrzymywalność kodu.

- Wykrywanie błędów na etapie kompilacji.

- Lepsze wsparcie IDE (np. autouzupełnianie).

2
New cards

Jakie są podstawowe typy w TypeScript?

- string - tekst, np. let name: string = "John";

- number - liczby, np. let age: number = 30;

- boolean - true/false, np. let isActive: boolean = true;

- array - tablice, np. let numbers: number[] = [1, 2, 3];

- tuple - tablica o stałej długości, np. let user: [string, number] = ["John", 30];

- any - dowolny typ (unikać, jeśli to możliwe).

3
New cards

Czym różni się interface od type w TypeScript?

Oba służą do definiowania kształtu obiektów, ale mają kluczowe różnice:

1. Rozszerzanie:

interface używa extends.

type używa przecięcia (&).

2. Łączenie (merging):

interface wspiera automatyczne łączenie (można definiować wielokrotnie).

type nie wspiera łączenia.

3. Unie i przecięcia:

Tylko type może definiować unie (|) i przecięcia (&).

4. Typy prymitywne:

Tylko type może definiować typy prymitywne (np. string).

5. Użycie w klasach:

Zarówno interface, jak i type mogą być implementowane przez klasy.

<p>Oba służą do definiowania kształtu obiektów, ale mają kluczowe różnice:</p><p>1. Rozszerzanie:</p><p>interface używa extends.</p><p>type używa przecięcia (&amp;).</p><p>2. Łączenie (merging):</p><p>interface wspiera automatyczne łączenie (można definiować wielokrotnie).</p><p>type nie wspiera łączenia.</p><p>3. Unie i przecięcia:</p><p>Tylko type może definiować unie (|) i przecięcia (&amp;).</p><p>4. Typy prymitywne:</p><p>Tylko type może definiować typy prymitywne (np. string).</p><p>5. Użycie w klasach:</p><p>Zarówno interface, jak i type mogą być implementowane przez klasy.</p>
4
New cards

Kiedy używać interface, a kiedy type?

Używaj interface, gdy:

Definiujesz kształt obiektu.

Chcesz korzystać z automatycznego łączenia (merging).

Pracujesz z klasami i implementacją interfejsów.

Używaj type, gdy:

Definiujesz unie, przecięcia lub bardziej złożone typy.

Potrzebujesz typów prymitywnych lub funkcji.

5
New cards

Jak działa dziedziczenie w TypeScript?

Dziedziczenie w TypeScript pozwala na tworzenie hierarchii klas, gdzie klasa potomna (subclass) dziedziczy właściwości i metody klasy bazowej (superclass). Jest to realizowane za pomocą słowa kluczowego extends.

Klasa potomna dziedziczy wszystkie właściwości i metody klasy bazowej.

6
New cards

Jakie są modyfikatory dostępu

public: Właściwości/metody dostępne wszędzie.

protected: Właściwości/metody dostępne w klasie bazowej i potomnych.

private: Właściwości/metody dostępne tylko w klasie bazowej.

7
New cards

Co to są generyki (generics) i do czego służą?

Generyki pozwalają tworzyć funkcje, klasy lub interfejsy, które działają z różnymi typami.

<p>Generyki pozwalają tworzyć funkcje, klasy lub interfejsy, które działają z różnymi typami.</p>
8
New cards

Jak działa enum w TypeScript?

enum to sposób na definiowanie zestawu nazwanych stałych

<p>enum to sposób na definiowanie zestawu nazwanych stałych</p>
9
New cards

Czym rózni się enum od const

enum:

Tworzy nowy typ z zestawem nazwanych stałych.

Może być używany zarówno jako wartość, jak i typ.

Jest kompilowany do obiektu JavaScript.

const:

Definiuje stałą wartość, która nie może być zmieniona.

Nie tworzy nowego typu.

Jest usuwany podczas kompilacji (nie ma śladu w JavaScript).

Kiedy używać?

enum: Używaj, gdy potrzebujesz typu z zestawem stałych.

const: Używaj, gdy chcesz zdefiniować stałe wartości bez tworzenia typu.

10
New cards

Co to jest type assertion i jak go używać?

Type assertion to sposób na rzutowanie typu, gdy TypeScript nie może go wywnioskować

<p>Type assertion to sposób na rzutowanie typu, gdy TypeScript nie może go wywnioskować</p>
11
New cards

Jak działa dekorator w TypeScript?

Dekoratory to funkcje modyfikujące klasy, metody, właściwości lub parametry. Są używane do dodawania metadanych, logowania, walidacji itp. Wymagają włączenia experimentalDecorators w tsconfig.json.

Podsumowanie:

Dekoratory modyfikują klasy, metody, właściwości lub parametry.

Używane w frameworkach (np. Angular).

Wymagają experimentalDecorators.

<p>Dekoratory to funkcje modyfikujące klasy, metody, właściwości lub parametry. Są używane do dodawania metadanych, logowania, walidacji itp. Wymagają włączenia experimentalDecorators w tsconfig.json.</p><p>Podsumowanie:</p><p>Dekoratory modyfikują klasy, metody, właściwości lub parametry.</p><p>Używane w frameworkach (np. Angular).</p><p>Wymagają experimentalDecorators.</p>
12
New cards

Co to jest readonly i jak go używać?

readonly oznacza, że właściwość może być przypisana tylko raz (np. w konstruktorze)

<p>readonly oznacza, że właściwość może być przypisana tylko raz (np. w konstruktorze)</p>
13
New cards

Jak działa keyof w TypeScript?

keyof zwraca unię kluczy danego typu:

typescript

<p>keyof zwraca unię kluczy danego typu:</p><p>typescript</p>
14
New cards

Co to jest utility type i podaj przykłady.

Utility types to wbudowane typy ułatwiające manipulację typami. Przykłady:

Partial - tworzy typ z opcjonalnymi właściwościami.

Pick

Omit

<p>Utility types to wbudowane typy ułatwiające manipulację typami. Przykłady:</p><p>Partial<t> - tworzy typ z opcjonalnymi właściwościami.</p><p>Pick<t, k=""> - wybiera określone właściwości z typu.</p><p>Omit<t, k=""> - pomija określone właściwości z typu.</t,></t,></t></p>
15
New cards

Jak działa never w TypeScript?

never oznacza wartość, która nigdy nie występuje, np. w funkcjach, które zawsze rzucają wyjątek

<p>never oznacza wartość, która nigdy nie występuje, np. w funkcjach, które zawsze rzucają wyjątek</p>
16
New cards

Jakie są różnice między == a === w TypeScript?

== - porównuje wartości z konwersją typów.

=== - porównuje wartości bez konwersji typów (zalecane)

17
New cards

Jak działa this w TypeScript?

this odnosi się do bieżącego kontekstu. W TypeScript można jawnie określić typ this

<p>this odnosi się do bieżącego kontekstu. W TypeScript można jawnie określić typ this</p>
18
New cards

Jakie są najlepsze praktyki w TypeScript?

Unikaj typu any:any wyłącza sprawdzanie typów, co prowadzi do utraty korzyści TypeScripta. Zamiast tego używaj konkretnych typów lub generyków.

Używaj strict mode:Włączenie strict w tsconfig.json wymusza ścisłe sprawdzanie typów, co pomaga unikać błędów, takich jak null/undefined czy niejawna obsługa typów.

Korzystaj z interfejsów i typów zamiast bezpośrednich adnotacji:Interfejsy (interface) i typy (type) zwiększają czytelność i umożliwiają ponowne wykorzystanie definicji typów w całej aplikacji.

Pisz testy jednostkowe:Testy jednostkowe zapewniają, że kod działa poprawnie po zmianach, a TypeScript pomaga w pisaniu bardziej niezawodnych testów dzięki statycznemu typowaniu.

19
New cards

Co znaczy as const na końcu const w TypeScript?

as const oznacza, że wartość jest stała (immutable) i jej typ jest dokładnie taki, jak zadeklarowany (bez rozszerzania typów).

Kiedy używać as const?

Gdy chcesz, aby typy były dokładne (literalne).

Gdy chcesz, aby obiekt lub tablica były niemutowalne (readonly).

<p>as const oznacza, że wartość jest stała (immutable) i jej typ jest dokładnie taki, jak zadeklarowany (bez rozszerzania typów).</p><p>Kiedy używać as const?</p><p>Gdy chcesz, aby typy były dokładne (literalne).</p><p>Gdy chcesz, aby obiekt lub tablica były niemutowalne (readonly).</p>
20
New cards

Co to jest namespace w TypeScript?

namespace grupuje powiązane klasy, interfejsy i funkcje, aby uniknąć konfliktów nazw.

<p>namespace grupuje powiązane klasy, interfejsy i funkcje, aby uniknąć konfliktów nazw.</p>
21
New cards

Jak działa typeof w TypeScript?

typeof zwraca typ zmiennej lub właściwości

<p>typeof zwraca typ zmiennej lub właściwości</p>
22
New cards

Co to jest infer w TypeScript?

infer to słowo kluczowe używane w warunkowych typach do wywnioskowania typu w trakcie analizy generyków. Pozwala na "wyciągnięcie" typu z innego typu, np. z typu zwracanego przez funkcję.

Jak działa infer?

Warunkowe typy:infer działa tylko w połączeniu z extends w warunkowych typach.

Wyciąganie typu:infer U oznacza, że TypeScript próbuje "zgadnąć" typ U na podstawie przekazanego typu.

Użycie:infer jest często używany w utility types, takich jak ReturnType, Parameters, Awaited itp.

Kiedy używać infer?

Gdy chcesz wyciągnąć typ z innego typu (np. typ zwracany przez funkcję, typ wewnątrz Promise).

Gdy tworzysz zaawansowane utility types.

<p>infer to słowo kluczowe używane w warunkowych typach do wywnioskowania typu w trakcie analizy generyków. Pozwala na "wyciągnięcie" typu z innego typu, np. z typu zwracanego przez funkcję.</p><p>Jak działa infer?</p><p>Warunkowe typy:infer działa tylko w połączeniu z extends w warunkowych typach.</p><p>Wyciąganie typu:infer U oznacza, że TypeScript próbuje "zgadnąć" typ U na podstawie przekazanego typu.</p><p>Użycie:infer jest często używany w utility types, takich jak ReturnType, Parameters, Awaited itp.</p><p>Kiedy używać infer?</p><p>Gdy chcesz wyciągnąć typ z innego typu (np. typ zwracany przez funkcję, typ wewnątrz Promise).</p><p>Gdy tworzysz zaawansowane utility types.</p>
23
New cards

Jak działa mapped types w TypeScript?

Mapped types pozwalają na tworzenie nowych typów na podstawie istniejących.

<p>Mapped types pozwalają na tworzenie nowych typów na podstawie istniejących.</p>
24
New cards

Co to jest event bubbling?

Tak, w JavaScript istnieje mechanizm o nazwie event bubbling (wynurzanie zdarzeń). Polega on na tym, że gdy zdarzenie (np. kliknięcie) zostanie wywołane na konkretnym elemencie, to najpierw obsługuje je ten element, a następnie zdarzenie "wędruje" w górę po drzewie DOM do jego rodziców, aż do obiektu window lub document. Dzięki temu zdarzenie może być obsłużone także na elementach nadrzędnych, co ułatwia zarządzanie zdarzeniami w zagnieżdżonych strukturach HTML.

W skrócie, event bubbling to propagacja zdarzenia od elementu docelowego do jego rodziców, co jest domyślnym sposobem obsługi zdarzeń w przeglądarkach. Można ją zatrzymać, używając metody event.stopPropagation() w handlerze zdarzenia, jeśli chcemy, by zdarzenie nie "bąbelkowało" dlej