Typy danych w TypeScript
W TypeScript istnieje kilka wbudowanych typów danych, które służą do określania rodzaju przechowywanych wartości. Typy te dzielimy na typy proste (prymitywne) i typy obiektowe.
- Typy proste (prymitywne):
number
– reprezentuje liczby, zarówno całkowite, jak i zmiennoprzecinkowe. Przykłady:
let x: number = 25;
let y: number = -30.5;
Przykładowe wartości:
0.000125
-50
90000000
string
– reprezentuje tekst. Może zawierać pojedyncze, podwójne lub backtickowe cudzysłowy. Przykłady:
let greeting: string = "Witaj";
let farewell: string = 'Do zobaczenia';
let sentence: string = `Dzisiaj jest poniedziałek`;
Przykładowe wartości:
'hi there'
""
'Today is Monday'
boolean
– typ logiczny, przyjmuje wartości true
lub false
. Przykłady:
let isActive: boolean = true;
let isCompleted: boolean = false;
Przykładowe wartości:
true
false
symbol
– unikalne wartości, które mogą służyć jako identyfikatory obiektów.
null
i undefined
– specjalne typy oznaczające brak wartości. Wartość null
oznacza zamierzone nieistnienie wartości, a undefined
brak przypisania wartości do zmiennej.
Typy obiektowe:
object
– służy do definiowania złożonych struktur, takich jak obiekty, klasy lub instancje.
let user: { id: number, name: string } = { id: 1, name: "Anna" };
array
– reprezentuje listę wartości tego samego typu.
let numbers: number[] = [1, 2, 3, 4, 5];
Date
– typ służący do przechowywania dat i godzin.
let today: Date = new Date();
Przykładowe wartości:
new Date()
Typy złożone użytkownika (np. Todo
):
let task: { id: number, completed: boolean, title: string } = { id: 1, completed: true, title: "Trash" };
{ id: 1, completed: true, title: „Trash” }
Dlaczego używamy typów?
Typy w TypeScript pełnią kluczową rolę w analizie naszego kodu i pomagają w jego poprawnym działaniu. Jak wynika z jednego z obrazków:
- Typy są używane przez kompilator TypeScript do analizowania kodu pod kątem błędów. Dzięki nim kompilator może sprawdzić, czy przekazywane wartości są zgodne z oczekiwanymi typami, co zmniejsza ryzyko wystąpienia błędów podczas działania aplikacji.
- Typy umożliwiają innym programistom zrozumienie przepływu wartości w kodzie. Dzięki adnotacjom typów, struktura kodu staje się bardziej czytelna i przewidywalna, co ułatwia współpracę w zespołach.
Jak i gdzie używamy typów?
- Typy są stosowane wszędzie, gdzie definiujemy zmienne, funkcje, obiekty czy tablice. Przykłady:
Typowanie zmiennych:
let name: string = "Jan";
let age: number = 30;
let isAdmin: boolean = false;
Typowanie funkcji
function greet(name: string): string {
return `Hello, ${name}`;
}
Typowanie tablic:
let scores: number[] = [85, 90, 78];
Typowanie obiektów:
let user: { id: number, name: string, active: boolean } = { id: 1, name: "Anna", active: true };
Typy złożone w TypeScript
TypeScript pozwala na tworzenie bardziej złożonych typów, które są kombinacjami innych typów. Możemy definiować typy użytkownika (np. Todo
), używać typów unii (string | number
), typów zagnieżdżonych (np. tablice obiektów) oraz typów generycznych.
Przykład użycia typów złożonych:
type Todo = {
id: number;
title: string;
completed: boolean;
};
let task: Todo = { id: 1, title: "Umyj naczynia", completed: false };
Typy prymitywne vs obiektowe
Na jednej z grafik przedstawiono różnicę między typami prymitywnymi a obiektowymi:
- Typy prymitywne obejmują:
number
,string
,boolean
,symbol
,null
,undefined
,void
. - Typy obiektowe obejmują:
array
,object
,class
,function
.
Każdy z tych typów ma swoje specyficzne zastosowania, a rozróżnienie między nimi jest istotne podczas projektowania aplikacji w TypeScript.