В папке TS лежит выполненное домашнее задание по TypeScript.
- DZ1 простые примеры
- DZ2 примеры с generic
- Final финальный проект "Система управления библиотекой"
- Добавляется библиотека
- добавляется 102 пользователя
import * as mock from "./mockobject";
import { Library, User, UserFilter, Role } from "./users";
const myLibrary = new Library()
// создаем первого админа
const godUser = myLibrary.LogInGod()
// заполняем пользователей для тестов
mock.addUsers(myLibrary, godUser)
- Добавляется каталог
- Добавляется 101 книга
import * as mock from "./mockobject";
import { Library, User, UserFilter, Role } from "./users";
import { Catalog, Book, BookFilter, Genre, BookReview } from "./catalog";
const myCatalog = new Catalog()
mock.addBooks(myCatalog, User) // User - пользователь с ролью [Role.librarian]
- User - пользователь.
- readonly id: number (номер)
- name: string (имя)
- email: string (электронная почта)
- role: Role[] (роли {admin, reader, librarian})
- readonly favorites: number[] (избранное)
- private active: boolean (активен/удален)
adminSetActive(currentUser: User, active: boolean) - используется для установки значения "activate".
- Если Истина тогда пользователь активен.
- Если Ложь тогда пользователь удален.
changeUser.adminSetActive(currentUser, false)
User.getId()
User.getActive()
User.postFavorites(13)
- UserFilter - фильтр для отборов, изменения и создания пользователей.
- id?: number (номер)
- name?: string (имя)
- email?: string (электронная почта)
- role?: Role[] (роли {admin, reader, librarian})
- active?:boolean (активен/удален)
- Library - Библиотека. Служит для управления пользователями.
- private finalId: number (последний зарегистрированный номер)
- private users: User[] (все пользователи библиотеки)
const myLibrary = new Library()
const godUser = myLibrary.LogInGod()
const findUser1 = myLibrary.getUserByID(godUser, 1) // админ
const findUser2 = myLibrary.getUserByID(godUser, 100) // библиотекарь
const findUser3 = myLibrary.getUserByID(godUser, 3) // читатель
getUsers(currentUser: User, option: UserFilter) - получить список пользователей на основании фильтра.
let options = new UserFilter()
options.role = [Role.reader];
options.active = false;
console.log(myLibrary.getUsers(godUser, options));
let options = new UserFilter()
options.name = 'Иван';
options.email = '911@library.ru';
options.role = [Role.admin];
options.active = true;
myLibrary.createUser(godUser, options)
deleteUser(currentUser: User, changeUser:User) - удаление пользователя. Ставим пометку, что пользователь не активен.
myLibrary.deleteUser(godUser, User)
let options = new UserFilter()
options.role = [Role.admin];
options.active = true;
myLibrary.editUser(godUser, User, options)
- Book - книга.
readonly id: number (номер)
name: string (название)
author: string (автор)
genre: Genre[] (жанр)
year: number (год издания)
private active: boolean (активена/удалена)
review: BookReview[] (обзор)
librarianSetActive(currentUser: User, active: boolean) - библиотекарь устанавливает активна или удалена книга
Book.librarianSetActive(User, false)
User.getId()
User.getActive()
let review = new BookReview
review.userid = 1
review.review = 'Отзыв положительный'
review.grade = 9
Book.postReview(review1)
- BookFilter - фильтр для отборов, изменения и создания книг.
- id?: number (номер)
- name?: string (название)
- author?:string (автор)
- genre?: Genre[] (жанр(ы))
- year?: number (год издания)
- active?:boolean (активена/удалена)
- BookFilter - отзыв.обзор.
- userid: number (номер пользователя)
- review: string (текст отзыва/обзора)
- grade: number (оценка)
- Catalog - Каталог. Служит для управения книгами.
- private finalId: number (последний зарегистрированный номер)
- private books: Book[] (все книги каталога)
const findBook = myCatalog.getBookByID(1)
let optionbook = new BookFilter
optionbook.genre = [Genre.poems, Genre.comedy]
optionbook.year = 2007
console.log(myCatalog.getBooks(optionbook));
let newBook = new BookFilter
newBook.name = "Цель"
newBook.author = "Элияху Голдратт"
newBook.genre = [Genre.business, Genre.theory]
newBook.year = 2014
newBook.active = true;
myCatalog.createBook(godUser, newBook)
const myCatalog = new Catalog()
myCatalog.deleteBook(User, Book)
let optionbook = new BookFilter
optionbook1.author = "Элияху Голдратт"
optionbook1.genre = [Genre.business]
optionbook1.year = 2014
myCatalog.editBook(godUser, Book, optionbook)