Перейти к основному содержимому

TypeScript (архив)

Архивный материал. Актуальный структурный раздел: перейти к карте подготовки.

TypeScript и JavaScript​

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

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

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

Недостатки использования TypeScript​

  • Сложность в изучении: Добавление новых концепций и синтаксиса может усложнить изучение для новичков.
  • Время на компиляцию: Требует дополнительного времени на компиляцию в JavaScript.
  • Необходимость в настройке: Потребность в конфигурации и настройке для оптимальной работы.

Перечисления (enum)​

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

enum Colors {
Red = 'Red',
Green = 'Green',
Blue = 'Blue'
}

Тип never и void​

  • never используется для типов, которые никогда не возвращают значение, например, функции, которые никогда не завершаются (например, функции, которые выбрасывают исключение или имеют бесконечный цикл).
  • void используется для функций, которые не возвращают значение.

Модификаторы доступа​

TypeScript поддерживает модификаторы доступа public, private и protected, которые определяют видимость членов класса. Это помогает инкапсулировать данные и поведение класса.

Generic​

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

function getFirstElement<T>(arr: T[]): T {
return arr[0];
}

const numbers = [1, 2, 3];
const strings = ['a', 'b', 'c'];

console.log(getFirstElement(numbers)); // Выведет: 1
console.log(getFirstElement(strings)); // Выведет: 'a'

🔗Generics

Тип unknown​

Тип unknown используется, когда точный тип переменной неизвестен, и требуется явная проверка типа перед использованием переменной. Это предотвращает неявное использование типа any.

Настройка noImplicitAny​

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

Отличие type и interface​

  • type может задать тип даже примитиву, а interface работает только с объектами.
  • interface может наследоваться и расширяться другими interface.
  • interface может быть имплементирован классом.
  • Можно объявить несколько одноименных interface, одноименные interface объединяются.

Отличие any от unknown​

  • any отключает статическую типизацию TypeScript, позволяя присваивать любой тип переменной.
  • unknown говорит, что в него может прийти что угодно, но походу использования, нужно контролировать, какой именно тип данных будет использоваться в логике кода.

Utility Types​

Utility Types в TypeScript предоставляют набор встроенных типов, которые позволяют создавать новые типы на основе существующих

  • Partial < T >: Делает все свойства типа T необязательными.
  • Readonly < T >: Делает все свойства типа T только для чтения.
  • Pick < T, K >: Извлекает определенные свойства из типа T.
  • Omit < T, K >: Исключает определенные свойства из типа T.
  • Record < K, T >: Создает новый тип, представляющий объект, ключами которого являются значения типа K, а значениями — значения типа T.
  • Exclude < T, U >: Извлекает из типа T все члены, которые не находятся в U.
  • NonNullable < T >: Удаляет из типа T все возможные значения null и undefined.
  • Parameters < Type >: Извлекает параметры функции типа Type.
  • ReturnType < Type >: Извлекает возвращаемый тип функции типа Type.
  • InstanceType < Type >: Извлекает экземпляр типа из конструктора типа Type.

🔗 Utility Types

Операторы & и |​

  • Оператор & используется для создания нового типа, который является пересечением двух или более типов.
  • Оператор | используется для создания нового типа, который является объединением двух или более типов.