Typy pierwotne
TypeScript obsługuje 7 typów pierwotnych. Pierwotny typ danych to typ, który nie jest obiektem i nie ma powiązanych z nim żadnych metod. W TypeScript wszystkie typy pierwotne są niezmienne, co oznacza, że po przypisaniu ich wartości nie można ich zmienić.
string
Typ pierwotny string przechowuje dane tekstowe, a jego wartość jest zawsze ujęta w cudzysłowy podwójne lub pojedyncze.
const x: string = 'x';const y: string = 'y';Ciągi znaków mogą obejmować wiele wierszy, jeśli są otoczone znakiem grawisu (`):
let sentence: string = `xxx, yyy`;boolean
Typ danych boolean w TypeScript przechowuje wartość binarną: true albo false.
const isReady: boolean = true;number
Typ danych number w TypeScript jest reprezentowany przez 64-bitową wartość zmiennoprzecinkową. Typ number może reprezentować liczby całkowite i ułamkowe.
TypeScript obsługuje również liczby szesnastkowe, binarne i ósemkowe, na przykład:
const decimal: number = 10;const hexadecimal: number = 0xa00d; // Hexadecimal starts with 0xconst binary: number = 0b1010; // Binary starts with 0bconst octal: number = 0o633; // Octal starts with 0obigint
Typ bigint reprezentuje wartości całkowite, które mogą być większe niż maksymalna bezpieczna liczba całkowita obsługiwana przez number, czyli 2^53 - 1.
Wartość bigint można utworzyć, wywołując wbudowaną funkcję BigInt() lub dodając n na końcu dowolnego literału liczby całkowitej:
const x: bigint = BigInt(9007199254740991);const y: bigint = 9007199254740991n;Uwagi:
- Wartości
bigintnie można mieszać z wartościaminumberani używać ich z wbudowanym obiektemMath; należy je przekonwertować do tego samego typu. - Wartości
bigintsą dostępne tylko wtedy, gdy konfiguracja elementu docelowego to ES2020 lub nowsza wersja.
Symbol
Symbole są unikatowymi identyfikatorami, których można używać jako kluczy właściwości w obiektach, aby zapobiegać konfliktom nazw.
type Obj = { [sym: symbol]: number;};
const a = Symbol('a');const b = Symbol('b');let obj: Obj = {};obj[a] = 123;obj[b] = 456;
console.log(obj[a]); // 123console.log(obj[b]); // 456null i undefined
Typy null i undefined reprezentują brak wartości.
Typ undefined oznacza, że wartość nie została przypisana ani zainicjalizowana lub wskazuje na niezamierzony brak wartości.
Typ null oznacza, że wiemy, iż pole nie ma wartości, więc wartość jest niedostępna i wskazuje na zamierzony brak wartości.
Tablica
Tablica (array) to typ danych, który może przechowywać wiele wartości tego samego typu lub różnych typów. Można ją zdefiniować przy użyciu następującej składni:
const x: string[] = ['a', 'b'];const y: Array<string> = ['a', 'b'];const j: Array<string | number> = ['a', 1, 'b', 2]; // UnionTypeScript obsługuje tablice tylko do odczytu przy użyciu następującej składni:
const x: readonly string[] = ['a', 'b']; // Readonly modifierconst y: ReadonlyArray<string> = ['a', 'b'];const j: ReadonlyArray<string | number> = ['a', 1, 'b', 2];j.push('x'); // InvalidTypeScript obsługuje krotki i krotki tylko do odczytu:
const x: [string, number] = ['a', 1];const y: readonly [string, number] = ['a', 1];any
Typ danych any reprezentuje dosłownie „dowolną” wartość i jest typem domyślnym, gdy TypeScript nie może wywnioskować typu lub gdy typ nie został określony.
Podczas używania any kompilator TypeScript pomija sprawdzanie typów, dlatego użycie any nie zapewnia bezpieczeństwa typów. Zasadniczo nie należy używać any do wyciszania kompilatora, gdy wystąpi błąd. Zamiast tego należy skupić się na naprawieniu błędu, ponieważ użycie any umożliwia naruszanie kontraktów i utratę korzyści z autouzupełniania w TypeScript.
Typ any może być przydatny podczas stopniowej migracji z JavaScript do TypeScript, ponieważ pozwala wyciszyć kompilator.
W nowych projektach należy używać opcji konfiguracji TypeScript noImplicitAny, dzięki której TypeScript zgłasza błędy w miejscach, gdzie użyto lub wywnioskowano any.
Typ any jest zwykle źródłem błędów, które mogą maskować rzeczywiste problemy z typami. Należy unikać jego używania, gdy tylko jest to możliwe.