interfaces.ts 835 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 CatalogItem {
  15. catalogNumber: number;
  16. }
  17. export interface DamageLogger {
  18. (reason: string): void;
  19. }
  20. interface Inventory<T> {
  21. addItem: (newItem: T) => void;
  22. getAllItems: () => Array<T>;
  23. getNewestItem: () => T;
  24. }
  25. interface Librarian extends Person {
  26. assistCustomer: (custName: string) => void,
  27. department: string,
  28. }
  29. interface Magazine {
  30. publisher: string;
  31. title: string;
  32. }
  33. export interface Person {
  34. email: string;
  35. name: string;
  36. }
  37. export {
  38. Author,
  39. Book,
  40. CatalogItem,
  41. DamageLogger as Logger,
  42. Inventory,
  43. Librarian,
  44. Magazine,
  45. }