- •Оглавление
- •Пример выполнения лабораторной работы
- •Создание основных типов данных и работа с ними
- •Создание массивов. Задание типов данных массивам.
- •Создание функций. Типы функций.
- •Создание собственного типа объекта
- •Специальные типы
- •Создание класса
- •Модификаторы доступа в TypeScript
- •Наследование классов
- •Интерфейсы
- •Декораторы
- •Задания
- •Настройка и установка необходимых компонентов
- •Создание авторизации и регистрации Создание модуля авторизации и регистрации
- •Роутинг, подключение шаблонов.
- •Разработка сервиса
- •Инициализация и валидации формы регистрации
- •Создание асинхронного валидатора
- •Создание компонента меню и шапки
Интерфейсы
Интерфейс определяет свойства и методы, которые объект должен реализовать. Другими словами, интерфейс - это определение кастомного типа данных, но без реализации. В данном случае интерфейсы в TS похожи на интерфейсы в языках Java и C#. Интерфейсы определяются с помощью ключевого слова interface.
Суть интерфейса состоит в том, чтобы перечислить в нем обязательные и необязательные поля, а затем определяем их для объектов или классов.
Пример интерфейса и его определение для класса:
interface Student {
name: string;
age?: number;
Info(info: string): void;
}
class IStudent implements Student {
name: string;
job: string;
newAge: number;
Info(info: string): void {
console.log(info);
}
}
Создан интерфейс Student с необязательным полем age и функцией Info.
Задание – реализовать определение интерфейса для объекта.
Декораторы
Декораторы являются инструментом декларативного программирования, они позволяют добавить к классам и их членам метаданные и тем самым изменить их поведение без изменения их кода.
Декораторы представляют функции, которые могут применяться к классам, методам, методом доступа (геттерам и сеттерам), свойствам, параметрам.
function addShowAbility(constructorFn: Function) {
constructorFn.prototype.showHtml = function() {
const pre = document.createElement('pre');
pre.innerHTML = JSON.stringify(this);
document.body.appendChild(pre);
}
}
@addShowAbility // декоратор класса
class User {
constructor(public name: string, public age: number, public job: string) {}
}
let user = new User('ngtu', 21, 'Student');
console.log(user);
(<any>user).showHtml();
В коде выше
function addShowAbility(constructorFn: Function) {}
Это функция, которая в качестве параметра принимает конструктор класса User – она и называется декоратором.
Далее создан класс User, в конструктор которого передаются поля и ниже объект класса.
Далее с помощью декоратора был добавлен метод всем экземплярам класса user.
В нем мы обращаемся к классу user, далее создаём функцию, которая будет в html выводить все поля класса в теге <p> в формате JSON.
Затем запускаем метод showHtml:
(<any>user).showHtml();
После чего в браузере выведутся все поля класса.
Задания
Создайте структуру с именем student, содержащую поля: фамилия и инициалы, номер группы, успеваемость (массив из пяти элементов). Создать массив из десяти элементов такого типа, упорядочить записи по возрастанию среднего балла. Добавить возможность вывода фамилий и номеров групп студентов, имеющих оценки, равные только 4 или 5.
Создать класс Money для работы с денежными суммами в котором для рублей и копеек предусмотрены независимые целочисленные данные. Реализовать метод вывода суммы на экран. На основе класса Money создать класс Good для работы с товаром. Предусмотреть метод, осуществляющий уменьшение цены на заданное число процентов.
Контрольные вопросы
Что такое класс?
Какие есть способы создания классов?
Что такое модификаторы доступа и как они работают?
Что такое наследование классов?
Что такое декоратор?
Литература
Руководство по TypeScript. [Электронный ресурс]. https://metanit.com/web/typescript/
Документация TypeScript [Электронный ресурс]. http://typescript-lang.ru/docs/
Лабораторная работа №5
Цель работы:
Разработка архитектуры и шаблонов SPA.
Требования к выполнению
Приложение должно содержать минимум два различных layout.
В шаблоне приложения должна быть реализована возможность авторизации и регистрации.
Система должна содержать HTML формы (кроме форм регистрации и авторизации)
Предусмотреть шаблоне возможность добавления элементов на странице при вводе пользователем текста в поля формы.
Пример выполнения лабораторной работы
Разбор структуры проекта
Проект включает в себя файлы в корне, директории, папки, в них еще файлы и т.д.
Файлы в корне проекта:
.angular-cli.json – этот файл отвечает непосредственно за настройку Angular CLI
.editorconfig - необходим для однозначности кода. Устанавливает определённые параметры для элементов. Например общая кодировка, размер и тип таба и т.д.
.gitignore – нужен для игнорирования определенных директорий в GIT.
karma.conf.js – файл для настройки karma. Karma – инструмент для тестирования приложения
package.json – записывает необходимые пакеты для запуска проекта,
protractor.conf.js - файл для настройки protractor. Protractor - – инструмент для тестирования приложения
tsconfig.json – служит для компиляции Typescript т.к сами браузеры его не компилируют
файл конфигурации для Typescript. Содержит правила форматирования, которые будут использоваться для проекта
Директории:
е2е – в ней находятся определённые файлы, отвечающие за тестирование
node_modules – содержит все пакеты, необходимые для работы приложения
src – содержит весь исходный код приложения
Директория проекта (src):
index.html – через данную страницу будет выводится все приложение
main.ts – запускает все приложение и устанавливает режим (режим разработки или работы)
polyfilles.ts – подключение библиотек
папка assets – необходима для хранения статических файлов
app – хранится весь исходный код приложения
Папка app:
app.component.css – файл стилей приложения
app.component.html - шаблон приложения
app.component.spec.ts – тесты для компонента
app.component.ts – файл компонента
app.module.ts – файл модуля
На данном этапе мы установили Angular и осуществили сборку простейшего приложения. Так же мы разобрали структуру базового проекта.
Для дальнейшей работы создадим новое приложение, с дополнительными характеристиками.