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

Курсы

Программирование
Разработчик на Spring Framework
-5%
iOS Developer. Professional
-8%
Golang Developer. Professional
-6%
Базы данных
-12%
Agile Project Manager
-5%
C# ASP.NET Core разработчик
-6%
Android Developer. Basic
-10%
React.js Developer
-4%
MS SQL Server Developer
-8%
Scala-разработчик
-8%
Java Developer. Basic
-8%
Алгоритмы и структуры данных
-9%
Разработчик IoT
-13%
PostgreSQL
-8%
Подготовка к сертификации Oracle Java Programmer (OCAJP) Python Developer. Professional Разработчик программных роботов (RPA) на базе UiPath и PIX Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов Node.js Developer Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes iOS Developer. Basic Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool"
Инфраструктура
DevOps практики и инструменты
-12%
Базы данных
-12%
Network engineer. Basic
-10%
Network engineer
-4%
Инфраструктурная платформа на основе Kubernetes
-6%
Экспресс-курс по управлению миграциями (DBVC)
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK
-10%
Administrator Linux. Professional
-6%
Разработчик IoT
-13%
Основы Windows Server Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов VOIP инженер Супер-практикум по работе с протоколом BGP NoSQL Супер-практикум по использованию и настройке GIT Супер-интенсив «СУБД в высоконагруженных системах» Экспресс-курс «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+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 комментариев
Для комментирования необходимо авторизоваться