02

Union, Literal, Tuple

Объединения, литералы, кортежи

Цель: получить навыки работы с объединениями, литералами, кортежами.

Порядок выполнения лабораторной работы:

  1. Используя окружение и репозиторий из прошлой работы, включите генерацию карты исходного кода.
  2. Решите предложенные задачи. Необходимые функции и типы экспортируйте из файла/файлов с решением. И импортируете их в другой файл, сделайте несколько вызовов каждой функции с выводом результата в консоль, чтобы убедиться в корректности решения.
  3. Зафиксируйте результаты работы с помощью системы контроля версий git в репозиторий на github.
  4. Отправьте коммиты на ваш репозиторий в Classroom.

Требования

  • Все задачи имеют решение и требуемый в них вывод.
  • Код компилируется и нет замечаний от ESLint.

Результат выполнения

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

Источники для занятия

Основные источники по TS

Задачи

Задача Тип треугольника

Дается 3 значения длин сторон. Вернуть тип треугольника: разносторонний, равнобедренный, равносторонний и невозможный, если нарушается неравенство треугольника.

Задача Сложение векторов

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

Задача Расстояние между векторами

Дается два n-мерных вектора, рассчитать евклидово расстояние между ними.

Задача Перемножение матриц произвольного размера

Дается две матрицы произвольного размера, проверьте возможность операции умножения и верните произведение этих матриц.

Задача CIE XYZ в sRGB

Дается кортеж координат цвета в пространстве CIE XYZ в диапазоне [0, 1], используя формулу из статьи sRGB рассчитайте значения цвета в пространстве sRGB. Используйте функцию из прошлой задачи.

Размеры по Золотому сечению

Используя литеральные типы и шаблонный литеральный строковый тип, создайте псевдоним типа, который позволяет указать размер css до 21 и только в em или rem. Например, 3rem, 21em. Напишите функцию, которая принимает число и опциональный параметр, а возвращает значение ближайшее к одному из чисел последовательности с em, если дан опциональный параметр то с rem.

Задача Конвертация температуры

К функции из задачи прошлого семестра convertTemp добавьте аннотации типов параметров и возвращаемого значения. Вам пригодятся типы с литеральным значением, шаблонные литеральные строковые типы, перегрузка функций.

Пример работы:

convertTemp(32, 'toC') -> '0 C'
convertTemp(10, 'toF') -> '50 F'

Вопросы для защиты

  1. Для чего нужна карта исходного кода?
  2. Продемонстрируйте работу с отладкой кода TS.
  3. Что такое тип?
  4. Объединение типов: обозначение, принцип работы.
  5. Типы с литеральным значением.
  6. Шаблонный литеральный строковый тип.
  7. Какое преимущество дает использование псевдонимов типов?
  8. Что такое кортеж и чем он отличается от массива в TS и JS?
  9. Перегрузка функций.