TypeScript. Основные типы

Основная фишка TypeScript - необязательная типизация данных. Поддерживаются следующие типы: boolean, number, string, array, tuple, enum, any и void. Указание типа переменной производится после знака двоеточия, стоящего за названием переменной:

let myName: string = 'Павел';
let myAge: number = 29;
let married: boolean = false;

Boolean

Пожалуй, самый простой тип данных - логический. Применяется для переменных, которые могут принимать только true или false.

let isDone: boolean = false;

Number

Числовой тип. В переменных number хранятся числа с плавающей точкой. TypeScript поддерживается десятичная, шестнадцатеричная, двоичная и восьмеричная форма записи чисел:

let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;

String

Строковые (текстовые) данные хранятся в переменных с типом string. Как и в Javascript, значение переменной заключается в одинарные ('') или двойные ("") кавычки. Для себя я принял, что в js файлах использую одинарные, а в html - двойные.

let color: string = "голубой";
color = 'или розовый';

Можно использовать еще одну прикольную штуку - шаблонные строки. Они могут быть многострочными и могут содержать выражения. Такие строки заключаются в обратные кавычки (``), а для вставки выражений используется синтаксис ${ expr }.

let myName: string = `Евлампий`;
let age: number = 9;
let sentence: string = `Миня завут ${ myName }.

Минe скора будит ${ age + 1 } лет!`

Array

Массивы. Есть два способа задания этого типа. Первый - указать тип данных и следом квадратные скобки:

let list: number[] = [1, 2, 3];  

Второй - с использованием дженериков:

let list: Array<number> = [1, 2, 3];

Тип всех элементов массива должен быть одинаковый.

Tuple

Вроде как "кортеж" по-нашему. Позволяет описать массив с фиксированным известным числом элементов определенного типа. Например, можно использовать для задания пар значений, состоящих из строки и числа:

//Определяем tuple x
let x: [string, number];
// Присваиваем значения
x = ['hello', 10]; // OK
// Присваиваем кривые значения
x = [10, 'hello']; // Ошибка
//Добавляемые элементы должны быть типа string или number
x [2] = 'world'; // OK
x [3] = true; // Ошибка

Enum

Полезное дополнение к набору типов - перечисления.

enum Color {Red, Green, Blue};
let c: Color = Color.Green;
console.log(c); // 1
let colorName: string = Color[c]; 
console.log(colorName); // Green

Значения можно задавать вручную:

enum Color {Red = 1, Green = 2, Blue = 4};

Any

Любой тип данных. Применяется, когда тип переменной нам не известен, либо он может изменяться в процессе выполнения. Также может быть использован для переменных сторонних библиотек, поведение которых не ясно.

let notSure: any = 4;
notSure = 'может это строка?';
notSure = false; // пнятненько, boolean

Также применяется для массивов, в которых содержатся элементы разных типов:

let list: any[] = [1, true, 'free'];
list[1] = 100;

Void

Отсутствие типа - почти противоположность any. Можно часто встретить как тип данных, возвращаемых функцией, когда функция ничего не возвращает:

function warnUser(): void {
    alert('Мое страшное сообщение!');
}

Для переменных, обозначенных как void, допустимы только значения undefined и null. Не очень полезно.

Явное указание типа

Когда мы знаем о переменной больше, чем TypeScript, можно указать ее тип явно.

Есть два способа сделать. Первый - синтаксис угловых скобок:

let someValue: any = 'это строка';
let strLength: number = (<string>someValue).length;

Второй - as-синтаксис:

let someValue: any = 'это строка';
let strLength: number = (someValue as string).length;

Павел Прудников

Постигающий дзен фулстэк вэб буддизма

Минск, Беларусь

Подписаться на Блог MEAN stack разработчика

Получайте свежие записи прямо на ваш почтовый ящик.

Или подпишитесь на RSS с Feedly!

Комментарии

comments powered by Disqus