HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: null, void, javascript, node, json, boolean, number, string, object, undefined, symbol, sum(true, false), arrays, tuples, --strictnullcheck, any, never, visual studio code, deno, v8-typescript</p>
1 <p>Теги: null, void, javascript, node, json, boolean, number, string, object, undefined, symbol, sum(true, false), arrays, tuples, --strictnullcheck, any, never, visual studio code, deno, v8-typescript</p>
2 <h2>JavaScript</h2>
2 <h2>JavaScript</h2>
3 <p>Язык был создан инженером Netscape Бренданом Эйком в 1995 году за 10 дней. В то время название языка варьировалось между JavaScript, Mocha, LiveScript или JScript (альтернативная версия языка от компании Microsoft). В результате многочисленных споров и обсуждений внутри компании Netscape было решено, что новый язык должен быть похож на Java и, можно даже сказать, что JavaScript был назван в его честь.</p>
3 <p>Язык был создан инженером Netscape Бренданом Эйком в 1995 году за 10 дней. В то время название языка варьировалось между JavaScript, Mocha, LiveScript или JScript (альтернативная версия языка от компании Microsoft). В результате многочисленных споров и обсуждений внутри компании Netscape было решено, что новый язык должен быть похож на Java и, можно даже сказать, что JavaScript был назван в его честь.</p>
4 <p>Основная идея была в том, чтобы создать "лёгкий для написания скриптов" язык для создания виджетов, простых компонентов и HTML-манипуляций. Термин "язык сценариев" означает высокоуровневый интерпретируемый язык программирования.</p>
4 <p>Основная идея была в том, чтобы создать "лёгкий для написания скриптов" язык для создания виджетов, простых компонентов и HTML-манипуляций. Термин "язык сценариев" означает высокоуровневый интерпретируемый язык программирования.</p>
5 <p>В числе прочих характеристик JavaScript также является динамическим и слабо типизированным. То есть, переменные могут легко менять тип присваиваемых значений. Например:</p>
5 <p>В числе прочих характеристик JavaScript также является динамическим и слабо типизированным. То есть, переменные могут легко менять тип присваиваемых значений. Например:</p>
6 <p>- <strong>Boolean</strong>- логический тип с возможными значениями<strong>true</strong>или<strong>false</strong>; -<strong>Number</strong>- числовой тип данных. Помните, что JavaScript поддерживает только числа с плавающей точкой и<strong>0.99999999999999999 === 1</strong>; -<strong>String</strong>- строки, которые можно декларировать с помощью всевозможных символов кавычек ', " или `; - <strong>Object</strong>- сложный тип данных, который часто ассоциируют с понятием<strong>JSON</strong>.</p>
6 <p>- <strong>Boolean</strong>- логический тип с возможными значениями<strong>true</strong>или<strong>false</strong>; -<strong>Number</strong>- числовой тип данных. Помните, что JavaScript поддерживает только числа с плавающей точкой и<strong>0.99999999999999999 === 1</strong>; -<strong>String</strong>- строки, которые можно декларировать с помощью всевозможных символов кавычек ', " или `; - <strong>Object</strong>- сложный тип данных, который часто ассоциируют с понятием<strong>JSON</strong>.</p>
7 <p>Два других типа данных<strong>null</strong>и<strong>undefined</strong>крайне занимательны тем, что, хотя оба означают пустое значение, тем не менее, несут разные смыслы:</p>
7 <p>Два других типа данных<strong>null</strong>и<strong>undefined</strong>крайне занимательны тем, что, хотя оба означают пустое значение, тем не менее, несут разные смыслы:</p>
8 <p>-<strong>Null</strong>- означает, что переменная не содержит значение; -<strong>Undefined</strong>- означает, что переменная не определена.</p>
8 <p>-<strong>Null</strong>- означает, что переменная не содержит значение; -<strong>Undefined</strong>- означает, что переменная не определена.</p>
9 <p>И последний, недавно добавленный тип: -<strong>Symbol</strong>- помогает решать задачи связанные с приватностью данных.</p>
9 <p>И последний, недавно добавленный тип: -<strong>Symbol</strong>- помогает решать задачи связанные с приватностью данных.</p>
10 <p>Под динамической природой языка часто подразумевает возможность приведения типов данных на лету:</p>
10 <p>Под динамической природой языка часто подразумевает возможность приведения типов данных на лету:</p>
11 a = 1 // присвоить 1 к переменной a a == true // верно a == '1' // верно a == [1] // верно a === true // неверно<p>и много<a>других забавных примеров</a>.</p>
11 a = 1 // присвоить 1 к переменной a a == true // верно a == '1' // верно a == [1] // верно a === true // неверно<p>и много<a>других забавных примеров</a>.</p>
12 <p>Возможность слабой типизации JavaScript удобно использовать для создания динамических объектов и свойств, но порой она привносит в код двусмысленность и плохую читабельность:</p>
12 <p>Возможность слабой типизации JavaScript удобно использовать для создания динамических объектов и свойств, но порой она привносит в код двусмысленность и плохую читабельность:</p>
13 function doSomething(data) { let callback if (typeof data === 'function') { callback = data } // ... callback() }<h2>TypeScript</h2>
13 function doSomething(data) { let callback if (typeof data === 'function') { callback = data } // ... callback() }<h2>TypeScript</h2>
14 <p>Язык, который компилируется (или, транспилируется) в стандартный JavaScript. Также TypeScript позволяет опционально описывать типы. Рассмотрим пример:</p>
14 <p>Язык, который компилируется (или, транспилируется) в стандартный JavaScript. Также TypeScript позволяет опционально описывать типы. Рассмотрим пример:</p>
15 function sum(a, b) { return a + b }<p>Выражение<strong>sum(true, false)</strong>валидно в JavaScript. Угадайте, чему равен результат?</p>
15 function sum(a, b) { return a + b }<p>Выражение<strong>sum(true, false)</strong>валидно в JavaScript. Угадайте, чему равен результат?</p>
16 <p>В TypeScript с помощью символа ":" можно явно указать, какие типы данных ожидаются в качестве аргументов, параметров или типов возвращаемого значения функции:</p>
16 <p>В TypeScript с помощью символа ":" можно явно указать, какие типы данных ожидаются в качестве аргументов, параметров или типов возвращаемого значения функции:</p>
17 function sum(a: number, b: number): number { return a + b }<p>В таком случае выражение<strong>sum(true, false)</strong>будет распознаваться как "неправильное" из-за использованных не-<strong>number</strong>значений.</p>
17 function sum(a: number, b: number): number { return a + b }<p>В таком случае выражение<strong>sum(true, false)</strong>будет распознаваться как "неправильное" из-за использованных не-<strong>number</strong>значений.</p>
18 <p>Так как TypeScript - язык-надмножество JavaScript, то все основные типы также в нём доступны:</p>
18 <p>Так как TypeScript - язык-надмножество JavaScript, то все основные типы также в нём доступны:</p>
19 <p>-<strong>boolean</strong>,<strong>number</strong>,<strong>string</strong>; -<strong>arrays</strong>,<strong>tuples</strong>- могут быть указаны в различных нотациях.</p>
19 <p>-<strong>boolean</strong>,<strong>number</strong>,<strong>string</strong>; -<strong>arrays</strong>,<strong>tuples</strong>- могут быть указаны в различных нотациях.</p>
20 const a: Array&lt;number&gt; = [3, 1, 4] // или const b: number[] // и const c: [string, number] = ["hello", 10]<p>Также<strong>null</strong>and<strong>undefined</strong>доступны и обычно могут быть использованы как "нулевые" значения к любым типам данных (не в случае флага компилятора<strong>--strictNullCheck</strong>s)</p>
20 const a: Array&lt;number&gt; = [3, 1, 4] // или const b: number[] // и const c: [string, number] = ["hello", 10]<p>Также<strong>null</strong>and<strong>undefined</strong>доступны и обычно могут быть использованы как "нулевые" значения к любым типам данных (не в случае флага компилятора<strong>--strictNullCheck</strong>s)</p>
21 <p><strong>Другие интересные типы:</strong></p>
21 <p><strong>Другие интересные типы:</strong></p>
22 <p>-<strong>any</strong>- для неизвестных типов данных переменных; -<strong>void</strong>- отсутствие возвращаемого значения в функции; -<strong>never</strong>- означает, что функция всегда выкидывает исключение и никогда не возвращает значение.</p>
22 <p>-<strong>any</strong>- для неизвестных типов данных переменных; -<strong>void</strong>- отсутствие возвращаемого значения в функции; -<strong>never</strong>- означает, что функция всегда выкидывает исключение и никогда не возвращает значение.</p>
23 <p>Количество инструментов и программ, написанных на или для языка TypeScript постоянно растёт. В качестве примеров можно привести:</p>
23 <p>Количество инструментов и программ, написанных на или для языка TypeScript постоянно растёт. В качестве примеров можно привести:</p>
24 <p><strong>Visual Studio Code</strong>- бесплатное IDE с открытым кодом, созданное компанией Microsoft;<strong>deno</strong>- недавно представленный<a>v8-TypeScript движок</a>, который в будущем может составить конкуренцию Node.</p>
24 <p><strong>Visual Studio Code</strong>- бесплатное IDE с открытым кодом, созданное компанией Microsoft;<strong>deno</strong>- недавно представленный<a>v8-TypeScript движок</a>, который в будущем может составить конкуренцию Node.</p>
25 <p>Полезные материалы: -<a>Brendan Eich - Popularity - 3 of April, 2008</a>-<a>Wat - A lightning talk by Gary Bernhardt from CodeMash 2012</a>-<a>TypeScript - Basic Types</a>-<a>TypeScript - Advanced Types</a>-<a>TypeScript runtime built on V8</a></p>
25 <p>Полезные материалы: -<a>Brendan Eich - Popularity - 3 of April, 2008</a>-<a>Wat - A lightning talk by Gary Bernhardt from CodeMash 2012</a>-<a>TypeScript - Basic Types</a>-<a>TypeScript - Advanced Types</a>-<a>TypeScript runtime built on V8</a></p>
26 <p><em>Есть вопрос? Напишите в комментариях!</em></p>
26 <p><em>Есть вопрос? Напишите в комментариях!</em></p>
27  
27