Аннотации типов
Пока что TypeScript выводил каждый тип по первому значению. Тип можно написать и самому: после имени переменной поставьте двоеточие и тип:
let heroName: string = "Кира";
let gold: number = 120;
let hasMap: boolean = false;Часть : string — это аннотация типа. Она говорит, что может хранить переменная: heroName — только строки, gold — только числа, а hasMap — только true или false. Первую строку можно прочитать так: «heroName хранит строку, и её первое значение — "Кира"». С const аннотации работают так же: const maxLevel: number = 10;.
С аннотацией TypeScript проверяет и первое значение, а не только последующие. Если значение не подходит к типу, ошибка сообщается прямо в строке, где создаётся переменная:
let gold: number = "120";main.ts(1,5): error TS2322: Type 'string' is not assignable to type 'number'.Столбец 5 указывает на имя переменной. "120" в кавычках — это строка, а аннотация говорит, что gold хранит числа. Без аннотации TypeScript вывел бы тип string и ничего бы здесь не сообщил. Ошибка проявилась бы позже, в строке, где с gold что-то вычисляют, а может быть, и вовсе никогда.
Аннотации существуют только для проверки. Как вы видели в предыдущем уроке, компилятор их убирает, и запускается просто let gold = 120;.
Типичные ошибки:
- Знак равенства вместо двоеточия:
let title = string;пытается положить в переменнуюstringкак значение, но это тип, а не значение:error TS2693: 'string' only refers to a type, but is being used as a value here. - Несуществующий тип:
let level: int = 3;заканчивается ошибкойerror TS2304: Cannot find name 'int'.В некоторых языках есть отдельный тип для целых чисел, но в TypeScript один тип для всех чисел:number. - Заглавная буква: с заглавной
String,NumberиBooleanозначают в TypeScript другое — типы особых объектов, которые вам почти никогда не понадобятся. TypeScript не считает их ошибкой, так что следите за этим сами: основные типы пишутся строчными буквами.
Задание
- 1
Добавьте аннотации типов трём переменным в редакторе:
heroName— этоstring,level—number, аhasMap—boolean. - 2
Под ними создайте переменную
goldс аннотациейnumberи значением120. - 3
Кира находит карту в сундуке. Под переменными присвойте
hasMapзначениеtrueи изменитеconsole.logв конце так, чтобы программа вывела:Кира, уровень 3, золото 120, карта: true