
Всем привет. Меня зовут Лихопой Кирилл и я — Frontend-разработчик в компании Idaproject.
Представляю вашему вниманию cвою первую статью на Хабре, a точне перевод англоязычной статьи, на тему изучения TypeScript (TS, Тайпскрипт).
С начала этого года я начал изучать TS, и меня заинтересовала эта статья, так как в ней все разложено «по полочкам», без лишней воды и сложных определений. В следствие этого родилась идея сделать ее перевод, чтобы начинающие разработчики могли ознакомиться с этой статьей, но уже на русском языке. Итак, приступим.
В последние несколько лет TypeScript обретает все большую популярность. Более того, на многих вакансиях от программистов требуется знание TypeScript.
Однако не стоит бояться — если вы уже знаете JavaScript, то вам не составит большого труда освоить TypeScript.
Даже если вы не планируете изучать TypeScript, знакомство с ним позволит вам глубже понять JavaScript и стать лучше, как разработчик.
В этой статье (серии статей) вы узнаете:
-
Что такое TypeScript, и почему мне нужно изучить его?
-
Как создать проект с использованием TypeScript.
-
Главные концепты TypeScript (типы, интерфейсы, дженерики (обобщенные типы), утверждение типов и многое другое).
-
Как использовать TypeScript с React’ом.
Я также создал PDF-шпаргалку и постер, которые суммируют эту статью. Они помогут вам быстро понять и освежить в памяти все концпеты и синтаксис TypeScript.
Прим. переводчика: в скором времени будет выпущен перевод данной шпаргалки.

Что такое TypeScript?
TypeScript — это расширенная версия JavaScript. То есть он содержит в себе все то же самое, что и JavaScript, но с некоторыми дополнениями.
Главная причина использовать TypeSciprt — это возможность добавить статическую типизацию к JavaScript. Тип переменной со статической типизацией не может быть изменен после ее объявления. Это может предотвратить БОЛЬШОЕ количество багов.
С другой стороны, JavaScript — динамически типизированный язык, то есть типы переменных могуть изменяться. Например:
// JavaScript let foo = "Привет"; foo = 55; // тип переменной foo изменяется со строки на число - никаких проблем // TypeScript let foo = "Привет"; foo = 55; // ERROR - тип переменной foo не может быть изменен
TypeScript не воспринимается браузерами, поэтому его надо скомпилировать в JavaScript с помощью TypeScript Compiler (TSC) — мы обсудим его чуть позже.
Стоит ли TypeScript того?
Почему вам нужно использовать TypeScript
-
Исследование показало, что TypeScript может обнаружить 15% самых частых багов.
-
Читаемость — намного проще видеть, что делает код. А при работе в команде проще видеть, что делают другие разработчики.
-
Популярность — знание TypeScript позволит вам расширить круг вакансий, на которые вы сможете претендовать.
-
Изучение TypeScript даст вам лучшее понимание и новый взгляд на JavaScript.
Недостатки TypeScript
-
Написание кода на TypeScript занимает большее время, чем на JavaScript,так как необходимо типизировать переменные. Так что в небольших проектах, возможно, оно не стоит того.
-
TypeScript необходимо компилировать, а это занимает время, особенно в больших проектах.
Однако время, которое вы потратите на написание более точного кода и компилляцию будет более чем компенисровано тем, сколько багов могло бы быть в вашем коде.
Для большинства проектов — средних и больших — TypeScript сэкономит вам много времени и сил.
Более того, если вы уже знаете JavaScript, то изучение TypeScript не составит вам большого труда. Он станет отличным инструментом в вашем арсенале.
Как настроить TypeScript проект
Установка Node и компилятора TypeScript (TSC)
Для начала убедитесть, что Node глобально установлена на вашей машине.
Затем, глобально установите компилятор TypeScript на вашей машине следующей командой:
npm i -g typescript
Убедитесь, что установка прошла успешно (если да — то команда вернет номер версии).
tsc -v
Как компилировать TypeScript
Откройте любой текстовые редактор и создайте TypeScript-файл (например, index.ts).
Напишите какой-нибудь код на JavaScript или TypeScript:
let sport = 'Футбол'; let id = 5;
Мы можем скомпилировать это в JavaScript следующей командой:
tsc index
TSC скомпилирует код в JavaScript-файл index.js:
var sport = 'Футбол'; var id = 5;
Если вы хотите изменить название файла:
tsc index.ts --outfile file-name.js
Если вы хотите, чтобы TSC компилировал ваш код автоматически, при изменениях, добавьте флаг “watch” (-w):
tsc index.ts -w
Интересная особенность TypeScript — он сообщает об ошибках в вашем текстовом редакторе, пока вы пишете код, но он все равно всегда скомпилирует ваш код — в независимости от того, есть в нем ошибки, или нет.
Например, следующий пример вызывает ошибку TypeScript:
var sport = 'Футбол'; var id = 5; id = '5'; // Ошибка компилятора - Error: Type 'string' is not assignable to type 'number'.
Однако, если мы попытаемся скомпилировать код с помощью tsc index , код скомпилируется, несмотря на ошибку.
Это важное преимущество TypeScript: он предполагает, что разработчик знает больше. Несмотря на то, что TypeScript выдает ошибку, это не отразится на компиляции вашего кода. Он скажет, что есть ошибка, но делать с ней что-то или нет — решать вам.
Как настроить файл конфигурации TypeScript
Файл конфигурации TS должен находиться в корневой директории вашего проекта. В этом файле мы можем уточнить корневые файл, опции компилятора и насколько строго мы хотим, чтобы TypeScript делал проверку в нашем проекте.
Сначала создаейте файл конфигурации TS:
tsc —init
После этого, в корневой директории, у вас должен появиться файл tsconfig.json .
Вот пример некоторых опций, о которых стоит знать (если вы используете frontend-фреймворк с TypeScript, то о большинстве этих вещей уже позаботились):
{ "compilerOptions": { ... /* Модули */ "target": "es2016", // Измените на "ES2015", чтобы скомпилировать в ES6 "rootDir": "./src", // Откуда компилировать "outDir": "./public", // Куда компилировать (обычно папка, которая разворачивается на сервере) /* Поддержка JavaScript */ "allowJs": true, // Позволяет компилировать JS-файлы "checkJs": true, // Проверяет типы в JavaScript-файлах и сообщает об ошибках /* Emit */ "sourceMap": true, // Создать source map файлы для готовых файлов JavaScript (хороошо подходит для дебаггинга) "removeComments": true, // Игнорировать комментарии }, "include": ["src"] // Компилировать только файлы из папки src }
Скомпилировать все и наблюдать за изменениями:
tsc -w
Напоминание: если вы указываете входные файлы в коммандной строке (например, tsc index ), файлы tsconfig.json будут игнорироваться.
Типы данных в TypeScript
Примитивы
В JavaScript примитивы значение — это данные, которые не являются объектами и не имеют методов. Всего есть 7 примитивных типов:
-
string
-
number
-
bigint
-
boolean
-
undefined
-
null
-
symbol
Примитивы иммутабельны: они не могут быть изменены. Важно не путать сами примитивы и переменные, объявленные, как примитивы. Переменной может быть назначено новое значение, но текущее значение не может быть изменено, так же, как могут быть изменены объекты, массивы и функции.
Например:
let name = 'Денис'; name.toLowerCase(); console.log(name); // Денис - метод строки не может изменить саму строку let arr = [1, 3, 5, 7]; arr.pop(); console.log(arr); // [1, 3, 5] - метод массива изменяет массив name = 'Анна' // присваивание дает примитиву новое (не измененное) значение
В JavaScript все примитвные значение (кроме null и undefined) имеют объектные эквиваленты, которые являются оболочкой для примитивы. Эти объекты-оболочки — String, Number, BigInt, Boolean и Symbol. Они имеют методы, которые позволяют манипулировать примитивами.
Теперь поговорим о TypeScript. В TypeScript мы можем указывать у переменной нужный нам тип данны с помощью : type после объявления переменной. Это называется объявлением типа, или подписью типа. Например:
let id: number = 5; let firstname: string = 'Денис'; let hasDog: boolean = true; let unit: number; // Объявление переменной без присваивания значение unit = 5;
Однако, в большинстве случаев, лучше не указывать тип явно, так как TypeScript автоматически присваивает тип переменной (вывод типа).
let id = 5; // TS знает, что это число let firstname = 'danny'; // TS знает, что это строка let hasDog = true; // TS знает, что это логическое значение hasDog = 'yes'; // ERROR - TS выдаст ошибку
Также, мы можем задать переменной объединенное значение. Объединенный тип — это переменная, которой можно присвоить более одного типа.
let age: string | number; age = 26; age = '26';
Подписывайтесь, чтобы не пропустить следующие части!
ссылка на оригинал статьи https://habr.com/ru/post/663964/
Добавить комментарий