#3 Базові типи данних TypeScript (string, number, boolean, null, undefined, any, void, unknown), а також масиви та кортежі

Основного перевагою в TypeScript є статична типізація. В принципі це є головним чинником, для чого був створений TypeScript. Як ви могли зрозуміти зі вступу до цього курсу, я недолюблюю статичну типізацію, але це є основою TS.

Статична типізація, це колі змінна, чи повернення динних з функції завжди повинно будти з однаковим типом. В TypeScript ви вказуєте цей тип для кожної змінної, та для кожної фукцнії. І коли ви почнете збирати проект, якщо тип данних в змінній буде відрізнятися, то проект не сбілдиться, та вам поверне помилку. Думаю не треба пояснювати, що в JS нічого вказувати не потрібно, і можна задавати любій змінній, будь які данні.

Ітак, типи данних в TypeScript, та як вони пишуться:

string - використовються для рядків та текстових данних

let greeting: string = "Привіт, світ!";
console.log(greeting); // Привіт, світ!

 

number - для чисел

let age: number = 25;
let temperature: number = -5.4;
console.log(age, temperature); // 25, -5.4

 

boolean - для true/false

let isActive: boolean = true;
console.log(isActive); // true

 

null та undefined - для відсутності значення

let empty: null = null;
let notAssigned: undefined = undefined;
console.log(empty, notAssigned); // null, undefined

І тут ви можете спитати, що за діч взагалі. Який сенс задавати змінну з значенням null, яку взагалі ніяк не можно змінити крім як на null? - спитайте у Майкрософт  насамперед цю змінну використовують тоді, коли значення змінної може бути null. Ну наприклад, ви тянете з бека номер телефону користувача, у одного користувача він є і вам приходить string, а в ішного нема і вам приходить null. Так ви все правильно зрозуміли, якщо змінна може бути не тільки в стані строки, а може прийти пусте (null) значення, то вам треба присилати це null значеняя для сторки в форматі - "", або дописати додатковий тип  null, з undefined по аналогії.

let userPhone: string | null = "+3806877*****"
userPhone = null

 

any - самий використовуємий тип тип який доволяє змінити тип данних в змінній ну будь який.

let randomValue: any = 10;
randomValue = "Тепер це рядок";
console.log(randomValue); // Тепер це рядок

 

unkown - дозволяє визначити тип пізніше, по факту можна використовувати як any

let userInput: unknown;
userInput = "Рядок";
userInput = 42;
console.log(userInput); // 42

 

void - використовується в основному для функцій, говорить про те, що функція може нічого не повертати

function logMessage(message: string): void {
    console.log(message);
}
logMessage("Це TypeScript"); // Це TypeScript

Мульти типи (UNION)

Для будь якої змінної ви можете задати декілька типів:

let id: number | string | boolean | null = 101;
id = "awdawdawdawd";
id = 15
id = true
id = null

Але не треба прикалуватися над тім лідами типу let id: any | unkown :) 

Автоматична типізація (неявна):

Ви просто не вказуєте тип, та TypeScript сам розпізнає його при першій зміні змінній

let city = "Київ";

Але не плуйтайте це з any. Тому що якщо в наступній трокі ви спробуєте написати city = 50, то отримаєте помилку, тому що city визначено як строка. Плюс ви не зможете це використовувати для динамічних данних.

Літерали

Літерали, це коли ви задаєте змінній замість типу, значеняя, які вона може приймати:

let direction: "up" | "down" | "left" | "right";
direction = "up";
console.log(direction); // up

Масиви

Якщо ви створюєте масиви, то для них теж треба створити тип, як для змінної, в якій знаходиться масив, так і для данних в самому масиві:

// Є 2 варіанти, які не відрізняються

let numbers: Array<number> = [1, 2, 3, 4, 5];
let strings: Array<string> = ["Привіт", "TypeScript"];
console.log(numbers, strings); // [1, 2, 3, 4, 5], ["Привіт", "TypeScript"]

let numbers: number[] = [1, 2, 3, 4, 5];
let strings: string[]= ["Привіт", "TypeScript"];
console.log(numbers, strings); // [1, 2, 3, 4, 5], ["Привіт", "TypeScript"]

Кортежі (Tuple)

Використовуються тоді, коли вам потрібно створити масив з фіксованою кількістю данних:

let person: [string, number] = ["Олексій", 30];
console.log(person); // ["Олексій", 30]

 

На цьому що до типів все. Далі ми будемо скоро розбирати функції, там додасться багато чого нецікавого, але що до базових типів на цьому все.