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>

新创建的服务密钥