0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>TypeScript был разработан компанией Microsoft как надстройка, или надмножество, JavaScript. При этом TypeScript считается отдельным языком программирования, поскольку имеет открытый код и очень быстро развивается. По популярности он уже догоняет JavaScript и входит в десятку самых используемых языков программирования в 2023 году<a>по данным Statista</a>.</p>
1
<p>TypeScript был разработан компанией Microsoft как надстройка, или надмножество, JavaScript. При этом TypeScript считается отдельным языком программирования, поскольку имеет открытый код и очень быстро развивается. По популярности он уже догоняет JavaScript и входит в десятку самых используемых языков программирования в 2023 году<a>по данным Statista</a>.</p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>Строгая типизация в TypeScript</a></li>
3
<ul><li><a>Строгая типизация в TypeScript</a></li>
4
<li><a>Улучшенное объектно-ориентированное программирование</a></li>
4
<li><a>Улучшенное объектно-ориентированное программирование</a></li>
5
<li><a>Дополнительные преимущества TypeScript</a></li>
5
<li><a>Дополнительные преимущества TypeScript</a></li>
6
<li><a>Заключение</a></li>
6
<li><a>Заключение</a></li>
7
</ul><h2>Строгая типизация в TypeScript</h2>
7
</ul><h2>Строгая типизация в TypeScript</h2>
8
<p>Строгая, или статическая, типизация, - это свойство языков программирования, при котором тип каждой переменной, выражения или функции строго определен и не может изменяться во время выполнения программы. Строгая типизация отличается от динамической типизации, где типы проверяются во время выполнения и переменные могут менять свой тип.</p>
8
<p>Строгая, или статическая, типизация, - это свойство языков программирования, при котором тип каждой переменной, выражения или функции строго определен и не может изменяться во время выполнения программы. Строгая типизация отличается от динамической типизации, где типы проверяются во время выполнения и переменные могут менять свой тип.</p>
9
<p>Рассмотрим на примерах, как строгая типизация работает в TypeScript.</p>
9
<p>Рассмотрим на примерах, как строгая типизация работает в TypeScript.</p>
10
<h3>Определение типов переменных</h3>
10
<h3>Определение типов переменных</h3>
11
<p>В TypeScript каждая переменная может быть объявлена с конкретным типом:</p>
11
<p>В TypeScript каждая переменная может быть объявлена с конкретным типом:</p>
12
<p>let userName: string = "Alice"; let userAge: number = 30; let isActive: boolean = true;</p>
12
<p>let userName: string = "Alice"; let userAge: number = 30; let isActive: boolean = true;</p>
13
<p>Попытка присвоить переменной значение неверного типа приведет к ошибке компиляции:</p>
13
<p>Попытка присвоить переменной значение неверного типа приведет к ошибке компиляции:</p>
14
<p>userName = 25; // Ошибка: Type 'number' is not assignable to type 'string'.</p>
14
<p>userName = 25; // Ошибка: Type 'number' is not assignable to type 'string'.</p>
15
<h3>Функции с типизированными параметрами и возвращаемым значением</h3>
15
<h3>Функции с типизированными параметрами и возвращаемым значением</h3>
16
<p>В TypeScript можно указать типы для параметров функции и для ее возвращаемого значения:</p>
16
<p>В TypeScript можно указать типы для параметров функции и для ее возвращаемого значения:</p>
17
<p>function add(x: number, y: number): number { return x + y; }</p>
17
<p>function add(x: number, y: number): number { return x + y; }</p>
18
<p>Вызов функции с параметрами неправильных типов приведет к ошибке:</p>
18
<p>Вызов функции с параметрами неправильных типов приведет к ошибке:</p>
19
<p>add("Hello", 5); // Ошибка: Argument of type 'string' is not assignable to parameter of type 'number'</p>
19
<p>add("Hello", 5); // Ошибка: Argument of type 'string' is not assignable to parameter of type 'number'</p>
20
<h3>Использование интерфейсов и классов</h3>
20
<h3>Использование интерфейсов и классов</h3>
21
<p>Интерфейсы определяют структуру приложения, в которой классы имеют строго типизированные свойства и методы:</p>
21
<p>Интерфейсы определяют структуру приложения, в которой классы имеют строго типизированные свойства и методы:</p>
22
<p>interface User { name: string; age: number; } function greet(user: User): string { return `Hello, ${user.name}! You are ${user.age} years old.`; } const user: User = { name: "Alice", age: 30, }; greet(user); // ОК greet({ name: "Bob", age: "thirty" }); // Ошибка: Property 'age' is of type 'string' but expected 'number'.</p>
22
<p>interface User { name: string; age: number; } function greet(user: User): string { return `Hello, ${user.name}! You are ${user.age} years old.`; } const user: User = { name: "Alice", age: 30, }; greet(user); // ОК greet({ name: "Bob", age: "thirty" }); // Ошибка: Property 'age' is of type 'string' but expected 'number'.</p>
23
<p>В этом примере greet ожидает объект типа User, и передача объекта с неправильными типами свойств приведет к ошибке компиляции.</p>
23
<p>В этом примере greet ожидает объект типа User, и передача объекта с неправильными типами свойств приведет к ошибке компиляции.</p>
24
<h2>Улучшенное объектно-ориентированное программирование</h2>
24
<h2>Улучшенное объектно-ориентированное программирование</h2>
25
<p>TypeScript и JavaScript поддерживают объектно-ориентированное программирование. Но в отличие от JavaScript TypeScript соответствует всем принципам ООП, например позволяет настраивать модификаторы доступа. Кроме того, вышеупомянутые интерфейсы позволяют типизировать классы.</p>
25
<p>TypeScript и JavaScript поддерживают объектно-ориентированное программирование. Но в отличие от JavaScript TypeScript соответствует всем принципам ООП, например позволяет настраивать модификаторы доступа. Кроме того, вышеупомянутые интерфейсы позволяют типизировать классы.</p>
26
<p>interface IUser { id: number; // Обязательное свойство name: string; // Обязательное свойство email?: string; // Необязательное свойство } function printUser(user: IUser) { console.log(`User ID: ${user.id}, Name: ${user.name}`); if (user.email) { console.log(`Email: ${user.email}`); } } const user: IUser = { id: 1, name: "John Doe", email: "john.doe@example.com" }; printUser(user);</p>
26
<p>interface IUser { id: number; // Обязательное свойство name: string; // Обязательное свойство email?: string; // Необязательное свойство } function printUser(user: IUser) { console.log(`User ID: ${user.id}, Name: ${user.name}`); if (user.email) { console.log(`Email: ${user.email}`); } } const user: IUser = { id: 1, name: "John Doe", email: "john.doe@example.com" }; printUser(user);</p>
27
<p>В этом примере интерфейс IUser определяет структуру объекта с тремя свойствами: id, name и email, где email необязателен. Функция printUser принимает объект, соответствующий интерфейсу IUser, и выводит его свойства в консоль.</p>
27
<p>В этом примере интерфейс IUser определяет структуру объекта с тремя свойствами: id, name и email, где email необязателен. Функция printUser принимает объект, соответствующий интерфейсу IUser, и выводит его свойства в консоль.</p>
28
<p>Объект user создается согласно определению интерфейса IUser и передается в функцию printUser.</p>
28
<p>Объект user создается согласно определению интерфейса IUser и передается в функцию printUser.</p>
29
<p>Эти модификаторы помогают обеспечивать инкапсуляцию и безопасность данных. В TypeScript есть три основных модификатора доступа:</p>
29
<p>Эти модификаторы помогают обеспечивать инкапсуляцию и безопасность данных. В TypeScript есть три основных модификатора доступа:</p>
30
<ol><li>Public (публичный). Члены класса доступны из любого места.</li>
30
<ol><li>Public (публичный). Члены класса доступны из любого места.</li>
31
<li>Private (приватный). Члены класса доступны только внутри класса, который их объявил.</li>
31
<li>Private (приватный). Члены класса доступны только внутри класса, который их объявил.</li>
32
<li>Protected (защищенный). Члены класса доступны внутри класса, который их объявил, и в классах, которые от него наследуются.</li>
32
<li>Protected (защищенный). Члены класса доступны внутри класса, который их объявил, и в классах, которые от него наследуются.</li>
33
</ol><p>В будущем всё это может появиться и в JavaScript, но браузеры начнут поддерживать такие возможности еще очень нескоро.</p>
33
</ol><p>В будущем всё это может появиться и в JavaScript, но браузеры начнут поддерживать такие возможности еще очень нескоро.</p>
34
<h2>Дополнительные преимущества TypeScript</h2>
34
<h2>Дополнительные преимущества TypeScript</h2>
35
<h3>Улучшение читабельности кода и командная работа</h3>
35
<h3>Улучшение читабельности кода и командная работа</h3>
36
<p>Система типов TypeScript делает код более понятным. Можно легко понять, какие данные ожидает функция или что возвращает, просто взглянув на ее сигнатуру. Это особенно ценно в больших проектах и при работе в команде, где нужно понимать код других разработчиков.</p>
36
<p>Система типов TypeScript делает код более понятным. Можно легко понять, какие данные ожидает функция или что возвращает, просто взглянув на ее сигнатуру. Это особенно ценно в больших проектах и при работе в команде, где нужно понимать код других разработчиков.</p>
37
<h3>Более качественный код</h3>
37
<h3>Более качественный код</h3>
38
<p>Строгая типизация в TypeScript приводит к меньшему количеству ошибок. Она помогает обнаруживать их еще на этапе компиляции, т. е. до того, как код будет запущен. Таким образом, многие потенциальные проблемы и ошибки можно исправить заранее, что сокращает время на отладку и повышает качество кода.</p>
38
<p>Строгая типизация в TypeScript приводит к меньшему количеству ошибок. Она помогает обнаруживать их еще на этапе компиляции, т. е. до того, как код будет запущен. Таким образом, многие потенциальные проблемы и ошибки можно исправить заранее, что сокращает время на отладку и повышает качество кода.</p>
39
<h2>Заключение</h2>
39
<h2>Заключение</h2>
40
<p>Несмотря на его удобство, TypeScript нескоро сможет заменить JavaScript. Но если вы хотите строить карьеру фронтенд-разработчика, знание TypeScript поможет вам повысить квалификацию.</p>
40
<p>Несмотря на его удобство, TypeScript нескоро сможет заменить JavaScript. Но если вы хотите строить карьеру фронтенд-разработчика, знание TypeScript поможет вам повысить квалификацию.</p>
41
41