HTML Diff
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