> For the complete documentation index, see [llms.txt](https://koziuk-s.gitbook.io/angular-starter/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://koziuk-s.gitbook.io/angular-starter/base-typescript/tipi-danikh.md).

# Типи даних

### Data Types.

Використання відповідних типів даних, допомагає нам писати код більш читабельним та надійним. Також, визначення типів, допомагає запобігати певних помилок на стадії розробки.

В TypeScript є наступні типи данних.

<table><thead><tr><th width="141">Тип</th><th>Значення</th></tr></thead><tbody><tr><td><strong>boolean</strong></td><td>логічне значеня типу true або false</td></tr><tr><td><strong>number</strong></td><td>числове значення (1, 2, 45.25, -8, 0)</td></tr><tr><td><strong>string</strong></td><td>стрічка</td></tr><tr><td><strong>null</strong></td><td>відповідає значенню null в javascript</td></tr><tr><td><strong>undefined</strong></td><td>відповідає значенню undefined в javascript</td></tr><tr><td><strong>array</strong></td><td>масив</td></tr><tr><td><strong>tuple</strong></td><td>кортеж (підвид масиву)</td></tr><tr><td><strong>enum</strong></td><td>набір іменованих значень</td></tr><tr><td><strong>void</strong></td><td>відсутність конкретного значення. Використовується в основному як тип для функції яка нічого не повертає</td></tr><tr><td><strong>never</strong></td><td>представляє відсутність значення і використовується як тип для функції, яка генерує або повертаютє помилку</td></tr><tr><td><strong>any</strong></td><td>довільний тип</td></tr></tbody></table>

&#x20;Для встановлення типу застосовується знак двокрапка **`:`**

{% code title="main.ts" overflow="wrap" lineNumbers="true" %}

```typescript
let isValid: boolean = true;

let pi: number = 3.14;
let age: number;

age = 25

let firstName: string = 'John';
let lastName: string = 'Doe';
```

{% endcode %}

Якщо змінній з визначеним типом даних присвоїти інший тип даних, то компілятор видасть нам помилку.

{% code title="main.ts" overflow="wrap" lineNumbers="true" %}

```typescript
let hello: string;

hello = 'hello world';
hello = 23; // ERROR: Type '23' is not assignable to type 'string'.
```

{% endcode %}

### **Масиви.**

Масиви визначаються за допомогою виразу квадратних дужок `[]` і також є строго типізовані. Тобто якщо спочатку масив містить рядки, то в майбутньому він зможе працювати тільки з рядками.

{% code title="main.ts" overflow="wrap" lineNumbers="true" %}

```typescript
let list: number[];  // масив чисел

list = [10, 20, 30];

let colors: string[]; // масив стрічок

colors = ['red', 'green', 'blue'];

// Або
let names: Array<string>; // масив стрічок

names = ['Tom', 'Bob', 'Alice'];
```

{% endcode %}

### **Кортежі (Tuples).**

Tакож, як і масиви, представляють набір елементів, для яких вже заздалегідь відомий тип.

{% code title="main.ts" overflow="wrap" lineNumbers="true" %}

```typescript
// Визначення кортежу - кортеж складається з двох елементів - рядки і числа
let person: [string, number];

// ініціалізація
person = ['Tom', 28]; // дані по типах мають строго співпадати.
```

{% endcode %}

### **Any.**

Описує дані, тип яких, може бути невідомий на момент написання програми.

{% code title="main.ts" overflow="wrap" lineNumbers="true" %}

```typescript
let someVar: any;

someVar = 'hello';
console.log(typeof someVar); // зараз someVar - це string

someVar = 20;
console.log(typeof someVar); // зараз someVar - це number
```

{% endcode %}
