W poprzednim wpisie pokazałem trzy podstawowe typy wbudowane w TypeScript. W tym natomiast pokaże jak tworzyć własne. W TypeScript możemy je definiować za pomocą aliasów, interfejsów oraz klas. W tym wpisie zajmiemy się pierwszym sposobem i stworzymy alias typu – czyli zestawy mniej bądź bardziej konkretnych wartości, jakie może zmienna danego typu przyjmować.
Składnia dla alias typu
Typy w TypeScripts określają zbiór wartości jakie może przyjąć dana zmienna. Czyli na przykładlet x : number
mówi nam, że do x możemy przypisać dowolną* liczbę.
Co w przypadku gdy chcemy by dana zmienna przybierała ograniczoną liczbę wartości?
Możemy na przykład zastosować aliasy typów wraz z operatorem | czyli OR (lub), znanego z wyrażeń warunkowych if/switch czy z wyrażeń logicznych.
By, na przykład, stworzyć typ, który będzie zawierał tylko wartości od 1 do 6 używamy składni:
type dice = 1 | 2 | 3 | 4 | 5 | 6; let x : dice = 5;
Słowo kluczowe type mówi nam, że tworzymy alias typu, następnie jest nazwa dla nowego typu, a po = następuje definicja tego typu.
Wracając do porównania typu jako 'worka’ z wartościami dla zmiennych. Stworzenie aliasu limited o definicji jak wyżej mówi nam, że wartości dla typu limited mogą być wzięte z worka gdzie jest wartość 1 lub worka z wartością 2 lub 3 i tak dalej. Każda z cyfr jest traktowana jak osobny typ.
Gdybyśmy chcieli stworzyć typ dla liter możemy zrobić type letter = 'a' | 'b' | 'c';
Ciekawsze aliasy
Oczywiście możemy mieszać różnie rodzaje typów podstawowych przy jednym alias typu. Nic nie stoi na przeszkodzie by stworzyć coś takiego:
type betterBoolean = 1 | true | 0 | false | 'Y' | 'N' | 'n' | 'y'; let a : betterBoolean = 1; a = 'Y'; a = false; a = 'TAK';
W ostatnim wypadku a = „TAK” dostaniemy błąd kompilacji TypeScript
Type 'TAK’ is not assignable to type 'betterBoolean’
Warto zwrócić uwagę na to, że „TAK” jest określane jako Type, a nie value.
Dodatkowo alias typu może przymować znane już nam typy podstawowe – number, string i boolean. Więc możemy zmienić nasz betterBoolean na coś takiego:
type betterBoolean = 1 | 0 | 'Y' | 'N' | 'n' | 'y' | boolean ;
Czyli typ betterBoolean zawiera wszystkie wartości dla boolean oraz 1, 0 i literki.
Jako że po kompilacji informacje o typach znikają z pliku JavaScript, tak też po aliasach typów również ślad nie zostaje. Po kompilacji powyższy kod wygląda tak:
"use strict"; let a = 1; a = 'Y'; a = false; a = 'TAK';
Interesuje Cię TypeScript? Wprowadzenie do tego języka jest jednym z darmowych kursów dostępnych na kursy.clockworkjava.pl.
Jeden komentarz do “Alias typu w TypeScript”