service.d.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import {Constructor} from './types.js';
  2. import {FindServicePredicate, ServiceContainer} from './service-container.js';
  3. /**
  4. * Service class name.
  5. */
  6. export const SERVICE_CLASS_NAME: 'Service';
  7. /**
  8. * Service.
  9. */
  10. export declare class Service {
  11. /**
  12. * Kind.
  13. */
  14. static readonly kinds: string[];
  15. /**
  16. * Container.
  17. */
  18. container: ServiceContainer;
  19. /**
  20. * Constructor.
  21. *
  22. * @param container
  23. */
  24. constructor(container?: ServiceContainer);
  25. /**
  26. * Получить существующий или новый экземпляр.
  27. *
  28. * @param ctor
  29. * @param args
  30. */
  31. getService<T extends object>(
  32. ctor: Constructor<T>,
  33. ...args: any[],
  34. ): T;
  35. /**
  36. * Получить существующий или новый экземпляр,
  37. * только если конструктор зарегистрирован.
  38. *
  39. * @param ctor
  40. * @param args
  41. */
  42. getRegisteredService<T extends object>(
  43. ctor: Constructor<T>,
  44. ...args: any[],
  45. ): T;
  46. /**
  47. * Проверка существования конструктора в контейнере.
  48. *
  49. * @param ctor
  50. */
  51. hasService<T extends object>(
  52. ctor: Constructor<T>,
  53. ): boolean;
  54. /**
  55. * Добавить конструктор в контейнер.
  56. *
  57. * @param ctor
  58. * @param args
  59. */
  60. addService<T extends object>(
  61. ctor: Constructor<T>,
  62. ...args: any[],
  63. ): this;
  64. /**
  65. * Добавить конструктор и создать экземпляр.
  66. *
  67. * @param ctor
  68. * @param args
  69. */
  70. useService<T extends object>(
  71. ctor: Constructor<T>,
  72. ...args: any[],
  73. ): this;
  74. /**
  75. * Добавить конструктор и связанный экземпляр.
  76. *
  77. * @param ctor
  78. * @param service
  79. */
  80. setService<T extends object>(
  81. ctor: Constructor<T>,
  82. service: T,
  83. ): this;
  84. /**
  85. * Найти сервис удовлетворяющий условию.
  86. *
  87. * @param predicate
  88. * @param noParent
  89. */
  90. findService<T extends object>(
  91. predicate: FindServicePredicate<T>,
  92. noParent?: boolean,
  93. ): T | undefined;
  94. }