ServiceKey class
ServiceKey — это ключ подстановки, который используется при вызове ServiceScope.consume() для получения зависимости.
Комментарии
Каждый ключ службы также предоставляет реализацию зависимости по умолчанию, которая будет автоматически создана в корневом область, если зависимость не найдена. Предоставление реализации по умолчанию гарантирует безопасное внедрение новых зависимостей без случайного нарушения компонентов, которые загружаются старым узлом, который не предоставляет новую зависимость.
Конструкторы
(constructor)(id, name, default |
Создает новый экземпляр |
Свойства
default |
Функция обратного вызова, которая создает экземпляр этой службы по умолчанию. |
id | Уникальный идентификатор для этого ключа службы. |
name | Имя службы. |
Методы
create(name, service |
Создает новый объект ServiceKey, версией по умолчанию которого будет новый экземпляр класса TypeScript, принимающий стандартный параметр конструктора. |
create |
Создает новый объект ServiceKey, реализацию по умолчанию для которого можно получить с помощью указанного метода обратного вызова. |
Сведения о конструкторе
(constructor)(id, name, defaultCreator)
Создает новый экземпляр ServiceKey
класса
protected constructor(id: string, name: string, defaultCreator: ServiceCreator<T>);
Параметры
- id
-
string
- name
-
string
- defaultCreator
Сведения о свойстве
defaultCreator
Функция обратного вызова, которая создает экземпляр этой службы по умолчанию.
readonly defaultCreator: ServiceCreator<T>;
Значение свойства
id
Уникальный идентификатор для этого ключа службы.
readonly id: string;
Значение свойства
string
Комментарии
Этот идентификатор представляет собой автоматически сгенерированную строку, которая будет уникальной в течение всего времени существования страницы. Вызывающие не должны делать предположений о форматировании этой строки. В настоящее время он основан на глобальном счетчике, но в будущем это может измениться.
ServiceScope использует этот идентификатор внутри в качестве ключа словаря для поиска служб. ServiceKey должен быть уникальным, даже если на одной странице загружено несколько экземпляров одной библиотеки, даже если в ServiceKey.create() было передано одно и то же имя. Это связано с тем, что каждый вызов ServiceKey.create() потенциально может обеспечить другую реализацию defaultCreator, в то время как одной из целей проектирования ServiceScope является то, что порядок загрузки библиотек никогда не должен влиять на результирующее дерево областей.
name
Имя службы.
readonly name: string;
Значение свойства
string
Комментарии
Это имя используется только для ведения журнала и диагностики. Чтобы сделать его уникальным, рекомендуемым соглашением является имя пакета, за которым следует точка, за которой следует имя класса или интерфейса.
Система не предполагает, что эта строка является уникальной. Вместо этого ServiceKey.id используется везде, где требуется ключ подстановки.
Сведения о методе
create(name, serviceClass)
Создает новый объект ServiceKey, версией по умолчанию которого будет новый экземпляр класса TypeScript, принимающий стандартный параметр конструктора.
static create<TKey>(name: string, serviceClass: {
new (serviceScope: ServiceScope): TKey;
}): ServiceKey<TKey>;
Параметры
- name
-
string
Имя, например my-package. IMyService", который должен быть уникальным в разных пакетах.
- serviceClass
-
{ new (serviceScope: ServiceScope): TKey; }
Класс TypeScript, реализующий службу.
Возвращаемое значение
ServiceKey<TKey>
Новый объект ServiceKey
Комментарии
Если вы хотите указать настраиваемые параметры конструктора, используйте serviceKey.createCustom().
createCustom(name, defaultCreator)
Создает новый объект ServiceKey, реализацию по умолчанию для которого можно получить с помощью указанного метода обратного вызова.
static createCustom<TKey>(name: string, defaultCreator: ServiceCreator<TKey>): ServiceKey<TKey>;
Параметры
- name
-
string
Имя, например my-package. IMyService", который должен быть уникальным в разных пакетах.
- defaultCreator
-
ServiceCreator<TKey>
обратный вызов, возвращающий объект, реализующий интерфейс T
Возвращаемое значение
ServiceKey<TKey>
только что созданный ключ службы