Основы синтаксиса TypeScript

Программа на TypeScript состоит из следующих частей:

  • Модули
  • Функции
  • Переменные
  • Инструкции и выражения
  • Комментарии

Первая программа на TypeScript

Мы можем использовать следующую программу на TypeScript для вывода "Hello World":

Код файла Example.ts:

const hello : string = "Hello World!" console.log(hello)

Попробуйте »

Приведённый выше код сначала компилируется с помощью командыtsc:

tsc Example.ts

Получается следующий js-код:

Код файла Example.js:

var hello = "Hello World!"; console.log(hello);

Наконец, мы используем команду node для выполнения этого js-кода.

$ node Example.js
Hello World

Весь процесс показан на следующем рисунке:

Мы можем скомпилировать несколько ts-файлов одновременно:

tsc file1.ts file2.ts file3.ts

Часто используемые параметры компиляции tsc показаны в следующей таблице:

Нет. Описание параметра компиляции
1.

--help

Показать справочную информацию

2.

--module

Загрузить расширяющие модули

3.

--target

Установить версию ECMA

4.

--declaration

Дополнительно создать файл с расширением .d.ts.

tsc ts-hw.ts --declaration

Приведённая выше команда создаст два файла: ts-hw.d.ts и ts-hw.js.

5.

--removeComments

Удаление комментариев из файлов

6.

--out

Скомпилировать несколько файлов и объединить их в один выходной файл

7.

--sourcemap

Создать файл sourcemap (.map).

Sourcemap — это информационный файл, в котором хранится сопоставление соответствующих позиций между исходным кодом и скомпилированным кодом.

8.

--module noImplicitAny

Сообщать об ошибке, когда в выражениях и объявлениях присутствует неявный тип any.

9.

--watch

Запустить компилятор в режиме отслеживания. Он будет отслеживать выходные файлы и перекомпилировать их при изменениях.


Зарезервированные ключевые слова TypeScript

Зарезервированные ключевые слова TypeScript показаны в следующей таблице:

Ключевое словоОписание
abstractИспользуется для определения абстрактных классов или абстрактных методов.
anyПредставляет тип any, отключая проверку типов.
asУтверждение типа, используется для преобразования одного типа в другой.
awaitИспользуется в async-функциях для приостановки выполнения кода до тех пор, пока Promise не разрешится.
booleanПредставляет тип boolean.
breakВыходит из цикла или оператора switch.
caseИспользуется для ветвей в операторе switch.
catchИспользуется для перехвата исключений.
classИспользуется для определения класса.
constОпределяет константную переменную.
continueПропускает текущую итерацию цикла и переходит к следующей.
debuggerЗапускает отладчик и приостанавливает выполнение кода.
declareОбъявляет переменную или модуль; обычно используется в файлах объявления типов.
defaultОпределяет ветвь default оператора switch.
deleteУдаляет свойство объекта или элемент массива.
doИспользуется вdo...whileциклах.
elseОпределяет ветвь else в условном операторе.
enumОпределяет тип enum.
exportИспользуется для экспорта переменных, функций или классов из модуля.
extendsИспользуется для наследования классов, указывая, что класс наследуется от другого класса.
falseЛогическое значениеfalse。
finallyОпределяетtry...catchфинальный блок выполнения кода в операторе.
forИспользуется вforциклах.
fromИспользуется в операторах import для указания источника модуля.
functionОпределяет функцию.
getИспользуется для геттер-метода объекта.
ifИспользуется для условной проверки.
implementsИспользуется, когда класс реализует интерфейс.
importИспользуется для импорта содержимого из модуля.
inИспользуется для проверки, содержит ли объект указанное свойство, или используется вfor...inциклах.
inferИспользуется для вывода типов в условных типах.
instanceofПроверяет, является ли объект экземпляром указанного класса.
interfaceИспользуется для определения интерфейса.
letОпределяет переменную с блочной областью видимости.
moduleОпределяет модуль (используется в ранних версиях TypeScript).
namespaceОпределяет пространство имён (используется в ранних версиях TypeScript).
newСоздаёт экземпляр класса.
nullПредставляет значение null.
numberПредставляет тип number.
objectПредставляет непримитивный тип.
ofИспользуется вfor...ofциклах.
packageИспользуется в системе модулей для идентификации пакетов.
privateИспользуется как модификатор доступа для членов класса, обозначающий private.
protectedИспользуется как модификатор доступа для членов класса, обозначающий protected.
publicИспользуется как модификатор доступа для членов класса, обозначающий public.
readonlyОбозначает свойство только для чтения.
requireИспользуется для импорта модулей CommonJS.
returnЗавершает функцию и может возвращать значение.
setИспользуется для метода-сеттера объекта.
stringПредставляет тип string.
superИспользуется для вызова метода или конструктора родительского класса.
switchИспользуется в операторах switch.
symbolПредставляет тип symbol.
thisСсылается на экземпляр текущего класса или объекта.
throwВыбрасывает исключение.
tryИспользуется в операторах обработки исключенийtry...catch。
trueЛогическое значениеtrue。
typeИспользуется для определения псевдонима типа.
typeofПолучает тип переменной или выражения.
undefinedПредставляет значение undefined.
uniqueИспользуется дляsymbolуникальный идентификатор типа.
varИспользуется для объявления переменных (больше не рекомендуется).
voidПредставляет тип без возвращаемого значения.
whileИспользуется вwhileциклах.
withИспользуется для создания области видимости, в которой можно опускать ссылки на объект (не рекомендуется).
yieldИспользуется в функциях-генераторах для приостановки и возобновления выполнения генератора.

Пробельные символы и переводы строк

TypeScript игнорирует пробелы, табуляции и переводы строк, которые встречаются в программе.

Пробелы и табуляции обычно используются для отступов в коде, что облегчает его чтение и понимание.

TypeScript чувствителен к регистру

TypeScript различает символы верхнего и нижнего регистра.

Точки с запятой необязательны

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

Следующий код полностью корректен:

console.log("Example")
console.log("Google");

Если операторы записаны в одной строке, для их разделения необходимо использовать точки с запятой, иначе будет выдана ошибка, например:

console.log("Example");console.log("Google");

Комментарии в TypeScript

Комментирование — хорошая привычка. Хотя многие программисты не любят комментарии, всё же рекомендуется писать текстовые пояснения в каждом фрагменте кода.

Комментарии могут улучшить читаемость программы.

Комментарии могут содержать некоторую информацию о программе, например об авторе кода, описания функций и т. д.

Компилятор игнорирует комментарии.

TypeScript поддерживает два типа комментариев

  • Однострочные комментарии ( // )− текст после // является содержимым комментария.

  • Многострочные комментарии (/* */)− такой тип комментария может занимать несколько строк.

Примеры комментариев:

// This is a single-line comment
 
/* 
 This is a multi-line comment 
 This is a multi-line comment 
 This is a multi-line comment 
*/

TypeScript и объектно-ориентированное программирование

Объектно-ориентированное программирование — это способ понимания и абстрагирования реального мира.

TypeScript — объектно-ориентированный язык программирования.

В объектно-ориентированном программировании в основном есть два понятия: объекты и классы.

  • Объект: Объект — это экземпляр класса (объект не означает найти девушку), у него есть состояние и поведение. Например, собака — это объект. Его состояния включают: цвет, имя, породу; его поведение включает: виляние хвостом, лай, поедание и т. д.
  • Класс: Класс — это шаблон, описывающий поведение и состояние класса объектов.
  • Метод: Метод — это шаги реализации операций класса.

На рисунке ниже,girl、boy— это класс, а каждый конкретный человек — объект этого класса:

Пример объектно-ориентированного программирования на TypeScript:

class Site { name():void { console.log("Example") } } var obj = new Site(); obj.name();

В приведённом выше примере определяется класс Site, который имеет метод name(). Этот метод выводит строку Example в терминал.

Ключевое слово `new` создаёт объект класса, и этот объект вызывает метод name().

Сгенерированный код JavaScript после компиляции выглядит следующим образом:

var Site = /** @class */ (function () { function Site() { } Site.prototype.name = function () { console.log("Example"); }; return Site; }()); var obj = new Site(); obj.name();

Выполнение приведённого выше кода JavaScript даёт следующий вывод:

Example
Другие расширения