Deklarowanie zmiennych w JavaScript bez przypisywania im określonego typu w momencie deklaracji jest zaskakujące dla wszystkich osób, które mają doświadczenie z innymi językami programowania i rozpoczynają swoją przygodę z JS. Ten stan rzeczy zmienił się dzięki TypeScript-owi, dzięki któremu każda zmienna może mieć określony typ. Wprawdzie po kompilacji typowanie i tak znika z kodu co prześledzić można na stronie: https://www.typescriptlang.org/ play/index.html jednak w momencie tworzenia kodu mechanizm ten pozwala uniknąć programiście wiele problemów.
Język TypeScript, który z kolei oparty jest na najnowszym EcmaScript6 wprowadzony został jako bazowy dla AngularJS 2.0. EcmaScript6 wprowadził do JavaScriptu m.in. Class czy tzw. Arrow Functions ( => ). Angular 2 to również programowanie reaktywne oparte o RxJs oraz polecany przez twórców Angulara Visual Studio Code, który znacząco ułatwia pisanie kodu.
Typy danych w TypeScript
Boolean
let variaType1: boolean = true;
Number
let variaType2: number = 3;
String
let variaType3: string = "Some text";
Array
let variaType4: number[] = [3, 6, 9];
let variaType4: Array = [3, 6, 9];
Mieszane typy
let variaType5: [number, string] = [9, "Some text"];
function mixedType(value: string | number) {
}
Any
let variaType6: any = 11;
let variaType6: any = false;
let variaType6: any[] = [11, true, "Some text"];
Void – nie zwraca wartości
function warnUser(): void {
alert("Jakiś ważny komunikat");
}
Optional
function somefn(x: number, y?: number) {
return x + (y || 0);
}
somefn(1); //OK
somefn(1, undefined); //OK
Type
type NameOrNameArray = string | string[];
function createName(name: NameOrNameArray) {
if (typeof name === "string") {
return name;
}
}
Interface
interface House {
color?: string;
rooms?: number;
}
function checkHouse(show: House) {
console.log(show.color);
console.log(show.rooms);
}
let myHouse = checkHouse({"red", 5});
Modyfikatory dostępu
public
public – wszystkie zmienne i wyrażenia wewnątrz klasy domyślnie, są typu public czyli istnieje do nich dostęp z zewnątrz (nie trzeba tego dopisywać)
private
private – brak dostępu do tak oznaczonej zmiennej spoza danej klasy
protected
protected – podobnie do private z tą różnicą, że do zmiennej protected będą miały instancje klas pochodnych