Поделиться через


ServiceKey class

ServiceKey — это ключ подстановки, который используется при вызове ServiceScope.consume() для получения зависимости.

Комментарии

Каждый ключ службы также предоставляет реализацию зависимости по умолчанию, которая будет автоматически создана в корневом область, если зависимость не найдена. Предоставление реализации по умолчанию гарантирует безопасное внедрение новых зависимостей без случайного нарушения компонентов, которые загружаются старым узлом, который не предоставляет новую зависимость.

Конструкторы

(constructor)(id, name, defaultCreator)

Создает новый экземпляр ServiceKey класса

Свойства

defaultCreator

Функция обратного вызова, которая создает экземпляр этой службы по умолчанию.

id

Уникальный идентификатор для этого ключа службы.

name

Имя службы.

Методы

create(name, serviceClass)

Создает новый объект ServiceKey, версией по умолчанию которого будет новый экземпляр класса TypeScript, принимающий стандартный параметр конструктора.

createCustom(name, defaultCreator)

Создает новый объект ServiceKey, реализацию по умолчанию для которого можно получить с помощью указанного метода обратного вызова.

Сведения о конструкторе

(constructor)(id, name, defaultCreator)

Создает новый экземпляр ServiceKey класса

protected constructor(id: string, name: string, defaultCreator: ServiceCreator<T>);

Параметры

id

string

name

string

defaultCreator

ServiceCreator<T>

Сведения о свойстве

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>

только что созданный ключ службы