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
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>
新创建的服务密钥