Среди большого количества разнообразных языков программирования выделяется TypeScript. В значительной степени из-за того, что только он позволяет существенно расширить возможности повсеместно используемого на практике JavaScript, функционал которого давно не устраивает значительную часть программистов. Фактически, тайпскрипт (русскоязычное наименование данного языка программирования) представляет собой своеобразную надстройку над JS, которая позволяет компилировать в JavaScript программы, написанные на нем. Поэтому имеет смысл рассмотреть особенности TypeScript, его преимущества и недостатки, а также основные компоненты более внимательно.
TypeScript (или сокращенно TS) представляет собой язык программирования, во многом схожий с JavaScript, но без многочисленных недостатков последнего. Он используется для frontend-разработки, то есть создания той части приложений, с которой непосредственно контактирует пользователь.
Созданный с помощью TypeScript программный код без проблем компилируется в JS и может быть использован для создания самых разнообразных проектов на любых браузерах и платформах.
Дополнительной опцией становится возможность выбора версии JavaScript, для которой пишется программа.
Еще одним достоинством TypeScript становится открытый код языка программирования. Результатом выступает быстрое развитие продукта, запущенного относительно недавно – в октябре 2012 года. Сегодня он имеет многочисленное комьюнити и входит в топы любых рейтингов популярности среди frontend-разработчиков. В настоящее время последней из выпущенных версий является 4.7.4, которая датируется 17.06.2022 года.
Описание TS было бы неполным без упоминания разработчика. Им выступает Андерс Хейлсберг, который стал непосредственным создателем еще нескольких языков программирования. В числе последних Delphi, Turbo Pascal и C#.
Можно выделить три главных достоинства TypeScript, выгодно отличающих язык программирования от JavaScript. Каждый целесообразно рассмотреть более внимательно.
Значительная часть проблем JavaScript объясняется динамической типизацией данных. TypeScript использует противоположный принцип работы, то есть статический. Каждому виду данных присваивается определенный тип – числовой, логический, строковый – что позволяет минимизировать неудобства работы с языком. В том числе – за счет простого и понятного описания данных с помощью различных способов, например, функции enum с ограниченным набором значений.
Главным достоинством строгой типизации данных становится обнаружение ошибок еще на этапе компиляции. Результатом становится отказ от исполнения команды, что делает возможным оперативное внесение необходимых изменений.
Применительно к JS такой принцип не работает, а баг можно обнаружить только в процессе тестирования или даже после запуска приложения.
Оба языка программирования относятся к объектно-ориентированным, то есть предусматривают несколько обязательных составляющих. В их числе: объекты, классы и наследование. Но TypeScript использует заметно больше возможностей подобных систем, к числу которых относятся:
Существует немалая вероятность включение перечисленных возможностей в функционал традиционного JavaScript. Но даже в этом случае обеспечить поддержку приложений всеми браузерами получится далеко не сразу, если вообще получится.
Ключевое достоинство рассматриваемого программного продукта. Именно на возможности компиляции кода в JavaScript базируется весь набор функциональных возможностей TypeScript. Без подобной интеграции смысл в еще одном языке программирования попросту теряется, так как именно JS используется в подавляющем большинстве уже работающих и проектируемых приложений.
Angular входит в число наиболее популярных фреймворков. Начиная со второй версии и до актуальных на сегодня модификаций, он написан именно на TypeScript. Что становится одним из главных аргументов в пользу изучения языка, позволяющего наиболее полно использовать незаурядные возможности программной платформы.
Значительная часть программистов охотно использует TypeScript. Тем более – с дополнением в виде широко применяемого фреймворка Angular.
Но даже очевидные преимущества языка программирования не способны поколебать лидирующие позиции JavaScript.
В пользу последнего выступают сразу несколько весомых аргументов, в числе которых:
Процедура установки TypeScript на ПК выглядит следующим образом:
Результатом выполнения перечисленных операций становится появление в указанной папке файла app.ts.
Именно его необходимо подключить к программируемой странице приложения.
Альтернативный вариант получения аналогичного результата – это написание несложной программы для компиляции. Она представляет собой файл конфигурации tscongig.json, в котором размещается следующий программный код.
{
"compilerOptions": {
"target": "es5",
"removeComments": true,
"outFile": "app.js"
}
}
В созданном файле хранятся базовые параметры, необходимые для работы компилятора. Чтобы запустить программу, достаточно ввести команду tsc в комнатную строку. Ее действие распространится на все файлы, которые имеют расширение .ts и расположены в данной папке.
Базовым принципом работы TypeScript выступает жесткая типизация данных и объектов, которая позволяет контролировать и управлять динамической составляющей JavaScript.
Разработчиками языка программирования предусмотрено нескольких их типов.
Основные необходимо перечислить и описать более подробно.
Правилами TS предусмотрено несколько типов множеств. Они необходимы для поддержки композиции программного кода и создания взаимосвязи между его отдельными элементами.
Карты относятся к ассоциативным массивам. Они определяют связь между ключом и значением, формируя таким образом специфичные данные для приложений. Пример программного кода, решающего данную задачу, представлен ниже.
type User = {
id: number
username: string
name: string
}
const user: User = {
id: 1,
username: 'Superman',
name: 'Clark Kent',
}
Векторы представляют собой структуру данных, последовательную и индексированную. TypeScript позволяет эмулировать их создание, что особенно важно, так как JavaScript не обладает подобным функционалом.
Кортежи имеют аналогичную структуру – последовательную и индексированную. Ключевым отличием от векторов выступает зависимость типа данных от позиции конкретного элемента в базе.
Предохранители (или защитники) типов являются выражениями, которые предназначены для проверки данных в процессе исполнения кода. Они необходимы для установления типа с целью правильного дальнейшего использования любого элемента.
Предохранители типов целиком задаются программистом. TypeScript не занимается их проверкой, а потому к написанию этой части кода следует подходить особенно аккуратно.
Валидация или доказательство подтверждения выполнения определенного требования выступает характерной особенностью TS. Она обеспечивается за счет грамотного использования предохранителей типов и позволяет установить корректный тип данных для дальнейшей синхронизации системы.
Настройка Type Script происходит посредством изменения содержимого файла tsconfig.json. Он размещается в корневом каталоге проекта и включает наборы ключей и значений, которые отвечают за решение трех задач:
Можно выделить несколько наиболее значимых настроек TypeScript, к числу которых относятся:
Чтобы лучше понять принцип написания программного кода на TypeScript целесообразно привести пример приложения, выполненного с помощью этого языка программирования. Оно предельно простое и предназначено для просмотра сообщений. Задачей программы выступает определение типа сообщения (один из трех – информационное, предупреждающее и сообщение об ошибке) и придание ему определенного стиля в зависимости от этого.
Дополнительная опция – просмотр сообщения, который активируется нажатием специальной кнопки. Программный код в файле msg.html приложения будет выглядеть следующим образом.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Сообщения</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h1>Сообщения</h1>
<div class="param">
<div>
<p>Заголовок</p>
<input type="text" id="header" value="Заголовок">
</div>
<div>
<p>Текст</p>
<textarea id="body" rows="10">Текст сообщения</textarea>
</div>
<div>
<p>Тип</p>
<select id="type">
<option value="info">Сообщение</option>
<option value="warning">Предупреждение</option>
<option value="error">Ошибка</option>
</select>
</div>
<button onclick="updateMessage();">Показать</button>
</div>
<div id="result" class="result">
<div class="info message">
<div class="info header">Заголовок</div>
<div class="info body">Текст сообщения</div>
</div>
</div>
</body>
</html>
Еще один файл – style.css – отвечает за настройку внешнего вида элементов. Его содержимое выглядит так.
body {
font-family: Verdana, sans-serif;
color: #336699;
}
div {
margin: 5px;
padding: 5px;
}
.param {
width:300px;
display: inline-block;
float: left;
background-color: #336699;
color: #ffffff;
border-radius: 10px;
}
.result {
display: inline-block;
float: left;
width: 300px;
background-color: #ffffff;
color: #336699;
border: 1px solid #003366;
border-radius: 10px;
}
.message {
border: 1px solid;
border-radius: 10px;
padding: 0px;
}
.header {
font-weight: bold;
font-size: larger;
}
.body {
font-style: italic;
}
.info {
color: #009900;
border-color: #009900;
}
.warning {
color: #FF8C00;
border-color: #FF8C00;
}
.error {
color: #990000;
border-color: #990000;
}
Третий файл приложения – script.ts. Он отвечает за изменение стиля элемента в зависимости от его типа. Программный код имеет следующий вид.
type msgTypes = "info" | "warning" | "error";
type msgParts = "header" | "body";
class Message {
header: string;
body: string;
type: msgTypes;
constructor(header: string, body: string, type: msgTypes) {
this.header = header;
this.body = body;
this.type = type;
}
insert(resultElement: HTMLElement) : void {
resultElement.innerHTML =
`<div class="${this.type} message" id="message">
<div class="${this.type} header">${this.header}</div>
<div class="${this.type} body">${this.body}</div>
</div>`;
}
}
function updateMessage() {
const header = (document.getElementById("header") as HTMLInputElement).value;
const body = (document.getElementById("body") as HTMLInputElement).value;
const type = (document.getElementById("type") as HTMLSelectElement).value;
let msg = new Message(header, body, type as msgTypes);
msg.insert(document.getElementById("result"));
}
Результатом компиляции становится файл script.js. Он содержит итоговый вариант приложения со следующим программным кодом.
var Message = /** @class */ (function () {
function Message(header, body, type) {
this.header = header;
this.body = body;
this.type = type;
}
Message.prototype.insert = function (resultElement) {
resultElement.innerHTML =
"<div class=\"".concat(this.type, " message\" id=\"message\">\n <div class=\"").concat(this.type, " header\">").concat(this.header, "</div>\n <div class=\"").concat(this.type, " body\">").concat(this.body, "</div>\n</div>");
};
return Message;
}());
function updateMessage() {
var header = document.getElementById("header").value;
var body = document.getElementById("body").value;
var type = document.getElementById("type").value;
var msg = new Message(header, body, type);
msg.insert(document.getElementById("result"));
}
Если вы хотите стать фронтэнд-разработчиком, то TypeScript вам в любом случае придется осваивать – на нем работают как уже готовые приложения (которые вам нужно будет дописывать), так и популярные фреймворки. Проще всего выучить TypeScript с помощью курсов, как и фронтэнд-разработку в целом:
Это язык программирования, предназначенный для frontend-разработки и последующей компиляции программного кода в JavaScript.
Главным преимуществом TS при сравнении с намного более популярным JS выступает строгая типизация данных, что позволяет избавиться от многочисленных недостатков второго, включая невозможность обнаружения ошибок на стадии написания кода.
Программирование на TS обходится несколько дороже и требует больших трудозатрат. Что частично компенсируется возможность создавать ПО с помощью фреймворка Angular, очень популярного и востребованного среди фронтенд-программистов.
TS постепенно набирает популярность, хотя еще сильно уступает JavaScript. По большинству опросов он уже входит в топ-10 среди языков программирования.