Беглый обзор JavaScript и TypeScript | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
iOS Developer. Professional Kotlin Backend Developer Flutter Mobile Developer Symfony Framework C++ Developer. Basic Unity Game Developer. Basic Java Developer. Professional
-35%
Highload Architect Unity Game Developer. Professional React.js Developer Специализация Java-разработчик
-25%
Алгоритмы и структуры данных
-16%
Scala-разработчик C# Developer. Professional
-23%
Разработчик голосовых ассистентов и чат-ботов Team Lead Архитектура и шаблоны проектирования NoSQL Web-разработчик на Python Golang Developer. Professional PostgreSQL Vue.js разработчик Супер-практикум по использованию и настройке GIT Разработчик IoT Подготовка к сертификации Oracle Java Programmer (OCAJP) Программист С HTML/CSS
Инфраструктура
Инфраструктурная платформа на основе Kubernetes Microservice Architecture Базы данных Highload Architect Reverse-Engineering. Professional
-8%
Network engineer. Basic Administrator Linux.Basic MongoDB Infrastructure as a code MS SQL Server Developer Cloud Solution Architecture Мониторинг и логирование: Zabbix, Prometheus, ELK Супер-практикум по использованию и настройке GIT Разработчик IoT Экcпресс-курс «ELK» Супер-интенсив "Tarantool" Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» Экспресс-курс «Введение в непрерывную поставку на базе Docker»
Корпоративные курсы
Безопасность веб-приложений Экосистема Hadoop, Spark, Hive Пентест. Практика тестирования на проникновение Node.js Developer Java QA Engineer. Basic
-18%
Reverse-Engineering. Professional
-8%
DevOps практики и инструменты NoSQL Reverse-Engineering. Basic Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Game QA Engineer Супер - интенсив по Kubernetes Дизайн сетей ЦОД Экспресс-курс «IaC Ansible» Экспресс-курс по управлению миграциями (DBVC) Экспресс-курс "Версионирование и командная работа с помощью Git" Основы Windows Server
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Беглый обзор JavaScript и TypeScript

JS_Deep_17.07_Site.png

JavaScript

Язык был создан инженером Netscape Бренданом Эйком в 1995 году за 10 дней. В то время название языка варьировалось между JavaScript, Mocha, LiveScript или JScript (альтернативная версия языка от компании Microsoft). В результате многочисленных споров и обсуждений внутри компании Netscape было решено, что новый язык должен быть похож на Java и, можно даже сказать, что JavaScript был назван в его честь.

Основная идея была в том, чтобы создать «лёгкий для написания скриптов» язык для создания виджетов, простых компонентов и HTML-манипуляций. Термин «язык сценариев» означает высокоуровневый интерпретируемый язык программирования.

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

– Boolean – логический тип с возможными значениями true или false; – Number – числовой тип данных. Помните, что JavaScript поддерживает только числа с плавающей точкой и 0.99999999999999999 === 1; – String – строки, которые можно декларировать с помощью всевозможных символов кавычек ', " или `; – Object – сложный тип данных, который часто ассоциируют с понятием JSON.

Два других типа данных null и undefined крайне занимательны тем, что, хотя оба означают пустое значение, тем не менее, несут разные смыслы:

Null – означает, что переменная не содержит значение; – Undefined – означает, что переменная не определена.

И последний, недавно добавленный тип: – Symbol – помогает решать задачи связанные с приватностью данных.

Под динамической природой языка часто подразумевает возможность приведения типов данных на лету:

a = 1 // присвоить 1 к переменной a
a == true // верно
a == '1' // верно
a == [1] // верно
a === true // неверно

и много других забавных примеров.

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

function doSomething(data) {
 let callback
 if (typeof data === 'function') {
   callback = data
 }
 // ...
 callback()
}

TypeScript

Язык, который компилируется (или, транспилируется) в стандартный JavaScript. Также TypeScript позволяет опционально описывать типы. Рассмотрим пример:

function sum(a, b) {
 return a + b
}

Выражение sum(true, false) валидно в JavaScript. Угадайте, чему равен результат?

В TypeScript с помощью символа «:» можно явно указать, какие типы данных ожидаются в качестве аргументов, параметров или типов возвращаемого значения функции:

function sum(a: number, b: number): number {
 return a + b
}

В таком случае выражение sum(true, false) будет распознаваться как «неправильное» из-за использованных не-number значений.

Так как TypeScript – язык-надмножество JavaScript, то все основные типы также в нём доступны:

boolean, number, string; – arrays, tuples - могут быть указаны в различных нотациях.

const a: Array<number> = [3, 1, 4]
// или
const b: number[]
// и
const c: [string, number] = ["hello", 10]

Также null and undefined доступны и обычно могут быть использованы как «нулевые» значения к любым типам данных (не в случае флага компилятора --strictNullChecks)

Другие интересные типы:

any – для неизвестных типов данных переменных; – void – отсутствие возвращаемого значения в функции; – never – означает, что функция всегда выкидывает исключение и никогда не возвращает значение.

Количество инструментов и программ, написанных на или для языка TypeScript постоянно растёт. В качестве примеров можно привести:

Visual Studio Code – бесплатное IDE с открытым кодом, созданное компанией Microsoft; deno – недавно представленный v8-TypeScript движок, который в будущем может составить конкуренцию Node.

Полезные материалы: – Brendan Eich - Popularity - 3 of April, 2008Wat - A lightning talk by Gary Bernhardt from CodeMash 2012TypeScript - Basic TypesTypeScript - Advanced TypesTypeScript runtime built on V8

Есть вопрос? Напишите в комментариях!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться