interfaces.ts 754 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { Category } from "./enums";
  2. interface Author extends Person {
  3. numBooksPublished: number;
  4. }
  5. interface Book {
  6. author: string,
  7. available: boolean,
  8. category: Category;
  9. id: number,
  10. markDamaged?: DamageLogger,
  11. pages?: number,
  12. title: string,
  13. }
  14. interface DamageLogger {
  15. (reason: string): void;
  16. }
  17. interface Inventory<T> {
  18. addItem: (newItem: T) => void;
  19. getAllItems: () => Array<T>;
  20. getNewestItem: () => T;
  21. }
  22. interface Librarian extends Person {
  23. assistCustomer: (custName: string) => void,
  24. department: string,
  25. }
  26. interface Magazine {
  27. publisher: string;
  28. title: string;
  29. }
  30. interface Person {
  31. email: string;
  32. name: string;
  33. }
  34. export {
  35. Author,
  36. Book,
  37. DamageLogger as Logger,
  38. Inventory,
  39. Librarian,
  40. Magazine,
  41. }