JavaRush /Курсы /Модуль 2: Fullstack /Сравнение TypeScript с JavaScript

Сравнение TypeScript с JavaScript

Модуль 2: Fullstack
3 уровень , 7 лекция
Открыта

Основные отличия между TypeScript и JavaScript

TypeScript и JavaScript — два популярных языка программирования, которые широко используются в веб-разработке. TypeScript является надмножеством JavaScript, что означает, что любой рабочий JavaScript-код является также рабочим TypeScript-кодом.

Однако TypeScript добавляет множество возможностей и улучшений, которые делают его более мощным и удобным для разработки крупных и сложных приложений. А JavaScript потихоньку «ворует» эти улучшения. Ниже мы рассмотрим основные отличия между TypeScript и JavaScript, а также вопросы совместимости между этими языками.

1. Статическая типизация

Одно из главных отличий TypeScript от JavaScript — это статическая типизация. В JavaScript типы переменных определяются во время выполнения, что может приводить к ошибкам, которые сложно отлавливать. TypeScript позволяет разработчикам явно указывать типы переменных, параметров функций и возвращаемых значений, что помогает обнаруживать ошибки на этапе компиляции.

Пример (JavaScript):

JavaScript
    
      function add(a, b) {
        return a + b;
      }

      console.log(add(5, '10')); // Результат: '510', ошибка на этапе выполнения
    
  

Пример (TypeScript):

TypeScript
    
      function add(a: number, b: number): number {
        return a + b;
      }

      console.log(add(5, 10)); // Результат: 15
      console.log(add(5, '10')); // Ошибка компиляции: Argument of type 'string' is not assignable to parameter of type 'number'.
    
  

2. Интерфейсы и типы

TypeScript предоставляет возможность определять интерфейсы и типы, которые описывают структуры объектов. Это делает код более предсказуемым и удобным для работы.

Пример (TypeScript):

TypeScript
    
      interface User {
        name: string;
        age: number;
        isAdmin?: boolean; // Опциональное свойство
      }

      const user: User = {
        name: 'Alice',
        age: 30
      };
    
  

3. Классы и объектно-ориентированное программирование

TypeScript расширяет возможности JavaScript в области объектно-ориентированного программирования (ООП), предоставляя полноценную поддержку классов, наследования, модификаторов доступа и абстрактных классов.

Пример (TypeScript):

JavaScript
    
      "use strict";
      class Animal {
        constructor(name) {
          this.name = name;
        }
        makeSound() {
          console.log(`${this.name} makes a sound.`);
        }
      }
      class Dog extends Animal {
        makeSound() {
          console.log(`${this.name} barks.`);
        }
      }
      const dog = new Dog('Buddy');
      dog.makeSound(); // Результат: Buddy barks.
    
  
TypeScript
    
      class Animal {
        constructor(public name: string) {}

        makeSound(): void {
          console.log(`${this.name} makes a sound.`);
        }
      }

      class Dog extends Animal {
        makeSound(): void {
          console.log(`${this.name} barks.`);
        }
      }

      const dog = new Dog('Buddy');
      dog.makeSound(); // Результат: Buddy barks.
    
  

4. Модули

TypeScript поддерживает модули ES6, что позволяет разделять код на логически связанные части и управлять зависимостями между ними.

Пример (TypeScript):

TypeScript
    
      // file: mathUtils.ts
      export function add(a: number, b: number): number {
        return a + b;
      }

      // file: app.ts
      import { add } from './mathUtils';

      console.log(add(5, 10)); // Результат: 15
    
  

5. Поддержка современных возможностей JavaScript

TypeScript поддерживает все современные возможности JavaScript, такие как асинхронные функции, деструктуризация, стрелочные функции и многое другое. Это позволяет использовать новейшие функции языка без ожидания их поддержки в браузерах.

Пример (TypeScript):

TypeScript
    
      async function fetchData(url: string): Promise<any> {
        const response = await fetch(url);
        const data = await response.json();
        return data;
      }

      fetchData('https://api.example.com/data')
        .then(data => console.log(data))
        .catch(error => console.error('Error:', error));
    
  

8.2 Совместимость TypeScript и JavaScript

1. Полная совместимость с JavaScript

TypeScript является надмножеством JavaScript. Это позволяет постепенно мигрировать существующие проекты на TypeScript или использовать его только для новых частей кода. Вы можете просто поменять расширение файла с js на ts, и ваш JavaScript-код станет валидным TypeScript-кодом.

Пример (JavaScript/TypeScript):

TypeScript
    
      // Этот код действителен как в JavaScript, так и в TypeScript
      function greet(name) {
        return `Hello, ${name}!`;
      }

      console.log(greet('World'));
    
  

2. Использование библиотек JavaScript

TypeScript позволяет легко интегрировать библиотеки JavaScript, даже если они не написаны на TypeScript. Для этого используются файлы деклараций типов (.d.ts), которые описывают API библиотеки и предоставляют информацию о типах.

Пример использования библиотеки jQuery в TypeScript:

Установите типы для jQuery:

Terminal
    
      npm install --save-dev @types/jquery
    
  

Используйте jQuery в TypeScript коде:

TypeScript
    
      import * as $ from 'jquery';

      $(document).ready(() => {
        $('body').html('<h1>Hello, TypeScript with jQuery!</h1>');
      });
    
  

3. Градиентная миграция

TypeScript позволяет проводить градиентную миграцию с JavaScript на TypeScript. Вы можете постепенно переводить части проекта на TypeScript, и тем самым избежать больших затрат времени и ресурсов на одном этапе.

Пример:

  1. Начните с преобразования существующих JavaScript файлов в TypeScript файлы, изменив расширение с .js на .ts.
  2. Постепенно добавляйте аннотации типов и интерфейсы.
  3. Используйте строгий режим проверки типов, чтобы улучшить качество кода.

4. Обратная совместимость

TypeScript поддерживает компиляцию в различные версии ECMAScript, что позволяет использовать его в старых браузерах и средах выполнения. Вы можете указать целевую версию ECMAScript в файле конфигурации tsconfig.json с помощью параметра target.

Пример tsconfig.json:

JSON
    
      {
        "compilerOptions": {
          "target": "es5",
          "module": "commonjs"
        }
      }
    
  

8.3 Преимущества использования TypeScript

TypeScript предоставляет множество преимуществ по сравнению с JavaScript, особенно для крупных проектов и командной разработки.

1. Улучшение качества кода

Статическая типизация и строгий режим проверки типов помогают обнаруживать ошибки на этапе компиляции, что уменьшает количество багов в коде и улучшает его надежность.

2. Лучшая поддержка автодополнения и рефакторинга

Благодаря информации о типах, редакторы и IDE могут предоставлять более точные функции автодополнения, навигации по коду и рефакторинга, что повышает производительность разработчиков.

3. Облегчение командной работы

Четко определенные типы и интерфейсы улучшают документирование кода и облегчают его понимание другими членами команды, что особенно важно в крупных проектах.

4. Поддержка современных возможностей языка

TypeScript позволяет использовать новейшие функции JavaScript без ожидания их поддержки в браузерах, что ускоряет процесс разработки и улучшает производительность приложений.

3
Задача
Модуль 2: Fullstack, 3 уровень, 7 лекция
Недоступна
Наследование классов в TypeScript
Наследование классов в TypeScript
3
Задача
Модуль 2: Fullstack, 3 уровень, 7 лекция
Недоступна
Импорт и экспорт модулей
Импорт и экспорт модулей
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ