ContextResolver.ts
19 lines
| 921 B
| video/mp2t
|
TypeScriptLexer
|
|
r1 | import { ActivationContext } from "./ActivationContext"; | ||
| export class ContextResolver<S extends object> { | ||||
| private readonly _context: ActivationContext<S>; | ||||
| constructor(context: ActivationContext<S>) { | ||||
| this._context = context; | ||||
| } | ||||
| resolve<K extends keyof S, O extends { lazy: true}>(name: K, opts?: O): () => (O extends { default: infer T } ? T : never) | NonNullable<S[K]>; | ||||
| resolve<K extends keyof S, O extends { lazy?: false}>(name: K, opts?: O): (O extends { default: infer T } ? T : never) | NonNullable<S[K]>; | ||||
| resolve(name: keyof S, opts?: {lazy?: boolean, default?: unknown}) { | ||||
| if (opts && opts.lazy) { | ||||
| return () => "default" in opts ? this._context.resolve(name, opts.default) : this._context.resolve(name); | ||||
| } else { | ||||
| return opts && "default" in opts ? this._context.resolve(name, opts.default) : this._context.resolve(name); | ||||
| } | ||||
| } | ||||
| } | ||||
