alias-typu-typescript

Alias typu w TypeScript

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';

Zapraszam do dołączenia do newslettera

Jedna myśl w temacie “Alias typu w TypeScript”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *