Объединения, литералы, кортежи
Цель: получить навыки работы с объединениями, литералами, кортежами.
Порядок выполнения лабораторной работы:
- Используя окружение и репозиторий из прошлой работы, включите генерацию карты исходного кода.
- Решите предложенные задачи. Необходимые функции и типы экспортируйте из файла/файлов с решением. И импортируете их в другой файл, сделайте несколько вызовов каждой функции с выводом результата в консоль, чтобы убедиться в корректности решения.
- Зафиксируйте результаты работы с помощью системы контроля версий git в репозиторий на github.
- Отправьте коммиты на ваш репозиторий в Classroom.
Требования
- Все задачи имеют решение и требуемый в них вывод.
- Код компилируется и нет замечаний от ESLint.
Результат выполнения
Код удовлетворяющий требованиям сохраненный в коммите на удаленном репозитории.
Источники для занятия
Основные источники по TS
- The TypeScript Handbook
- Справочник Typescript (не последняя версия)
- Серия статей Изучение TypeScript
- Курс TypeScript
Задачи
Задача Тип треугольника
Дается 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'
Вопросы для защиты
- Для чего нужна карта исходного кода?
- Продемонстрируйте работу с отладкой кода TS.
- Что такое тип?
- Объединение типов: обозначение, принцип работы.
- Типы с литеральным значением.
- Шаблонный литеральный строковый тип.
- Какое преимущество дает использование псевдонимов типов?
- Что такое кортеж и чем он отличается от массива в TS и JS?
- Перегрузка функций.