TypeScript: базовые типы данных

Назад | Учебник TypeScript | Вперёд

Содержание

Введение

Boolean

Number

String

Array

Tuple

Перечисления (enum)

Any

Void

Null и Undefined

Never

Приведение к типу (Type assertion)

Замечание про let

Ссылки

Введение

Лорды, сэры, пэры, дамы, Леди и баронессы, намедни я соизволил приступить к изучению TypeScript. Посему позвольте представить вам на людской суд переводную статью про базовые типы данных в TypeScript. Читатели, кои достаточно образованы, могут прочесть оригинал на английском языке.

Чтобы программы были полезными, нам нужно оперировать с некоторыми простыми порциями данных: числами, строками, структурами, логическими значениями и тому подобными. В TypeScript поддерживаются все типы JavaScript, а также удобный тип перечислений.

Boolean

Самый простой тип данных — логический тип со значениями true / false. В TypeScript он называется boolean, то есть так же как и в JavaScript.

Number

Числа в TypeScript работают аналогично числам в JavaScript и имеют тип number. В дополнение к шестнадцатеричнодесятичным и десятичным литералам TypeScript поддерживает двоичные и восьмиричные литералы, которые были введены в ECMAScript 2015.

String

Для хранения строк TypeScript использует двойные " или одинарные '  для обрамления строк.

Вы также можете использовать шаблоны строк, которые могут занимать несколько строк и содержать вычисляемые выражения внутри себя. Эти строки окружаются обратной кавычкой `  (которая на клавиатуре обычно расположена на клавише с буквой «ё»). Вычисляемые выражения внутри шаблонов строк пишутся в виде ${выражение}.

Вышеприведённый код запишет в переменную sentence то же значение, что и вот такой:

Array

Массивы могут быть записаны двумя способами

В первом случае вы используете [], чтобы указать массив типов:

Второй способ использует обобщённый тип массива, Array<elemType>:

Tuple

Типы tuple позволяет вам создавать массив, где известны типы у определённого количества элементов, но требуется, чтобы эти типы были различны. Например, вы можете представить значение как пару string и number:

При обращении к элементу по известному индексу мы получаем корректный тип:

При обращении к элементу за пределами известного множества индексов мы получаем объединённый тип (union type).

Перечисления (enum)

Перечисление или enum — это полезное дополнение к множеству типов JavaScript. Перечисление — это способ дать более понятные имена множеству числовых значений.

По умолчанию перечисления начинают нумерацию своих элементов с нуля. Это можно поменять, если указать вручную значение для какого-нибудь из элементов. Например, в предыдущем примере мы можем начать нумерацию с 1 вместо 0.

Или даже указать вручную все значения в перечислении:

Одно из полезных свойств перечислений — это то, что вы можете преобразовывать числовые значения в название из перечисления. Например, у нас есть число 2, но мы точно не знаем, что привязано к этому значению в перечислении Color, тогда мы можем узнать название элемента перечисления по этому индексу так:

Any

Иногда бывает необходимо объявить переменные, тип которых нам неизвестен во время написания приложения. Эти переменные могут хранить разные значения, например от пользователя или от сторонней библиотеки. В этих случаях бывает полезно отключить для них проверку типов на этапе компиляции. Для этого используется тип any:

Тип any  — мощный способ работать с существующим кодом JavaScript, позволяющий избежать проверки типов на этапе компиляции. Вы можете подумать, что Object делает то же самое, как он делает в других языках программирования, но переменные типа Object позволяют вам только присваивать произвольные значения, но вы не сможете вызвать произвольные методы для них, даже если они существуют:

Можно также объявлять массивы со значениями типа any:

Void

Тип void несколько противоположен типу any, так как он обозначает отсутствие типа. Часто его используют для объявления функций, которые не возвращают никаких значений:

Объявление переменных типа void  обычно бесполезно, так как вы можете присвоить им только undefined и null:

Null и Undefined

В TypeScript значения undefined и null имеют свои собственные типы: undefined и null. Они не особо полезны сами по себе:

По умолчанию типы null и undefined являются подтипами всех других типов, что означает, что вы можете присвоить null и undefined к чему-нибуть типа number.

Однако при использовании флага --strictNullChecks значения null и undefined можно присваивать только к void и соответствующим им типам. Это помогает избежать много частых ошибок. Когда вы хотите иметь возможность передавать и string, и null, и undefined, то вы можете использовать объединённый тип string | null | undefined. Про объединённые типы будет рассказано позже.

Примечание: мы советуем использовать флаг --strictNullChecks везде, где это возможно, но в этом учебнике мы будем полагать, что он отключён.

Never

Тип never представляет тип для значений, которые никогда не произойдут. Например, never — это тип возвращаемого значения для функции, которая всегда бросает исключение, или которая никогда не завершается. Переменные тоже могут получить тип never, которые ограничены такими ограничениями, которые никогда не примут значение true.

Тип never является подтипом любого типа и может быть присвоен любому типу. Однако никакой тип не является подтипом never и не может быть ему присвоен (кроме самого never). Даже any нельзя присвоить типу never.

Приведение к типу (Type assertion)

Иногда вы можете оказаться в ситуации, когда вы знаете о значении больше, чем знает TypeScript. Обычно это происходит, когда вы знаете, что тип какой-нибудь сущности может быть более специфичным, чем текущий.

Приведение к типу позволяет сказать компилятору: «Поверь мне, я знаю, что делаю.» Приведение к типу работает аналогично приведению/преобразованию к типу в других языках, но оно не осуществляет никаких проверок и преобразований данных. Оно не имеет никаких накладных расходов во время выполнения, так как оно используется исключительно компилятором.

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

Другая форма использует синтаксис as:

Эти два примера эквивалентны. Использование первого или второго способа — это только вопрос предпочтений. Однако при использовании TypeScript в JSX разрешён только синтаксис as.

Замечание про let

Вы, наверное, уже заметили, что мы используем ключевое слово let вместо JavaScript-ового var, к которому вы, скорее всего, больше привыкли. Ключевое слово let — это новая конструкция JavaScript, которую делает доступной TypeScript. Позднее об этом будет рассказано более подробно, но огромное количество частых проблем JavaScript исключается при использовании let, поэтому вам следует использовать его вместо var везде, где это возможно.

Ссылки

Учебник JavaScript

Назад | Учебник TypeScript | Вперёд

 

TypeScript: базовые типы данных: 4 комментария

  1. серы => сэры
    перы => пэры
    Между прочим, некоторые из упомянутых в статье возможностей возможны и в нативном JS.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *