Box.ts
29 lines
| 724 B
| video/mp2t
|
TypeScriptLexer
|
|
r117 | import { Bar } from "./Bar"; | ||
|
|
r127 | import { annotate, dependency } from "./services"; | ||
|
|
r114 | |||
| // export service descriptor | ||||
|
|
r119 | // через service передается информация о типе зависимости | ||
| // даже если это шаблон. | ||||
|
|
r127 | export const service = annotate<Box<Bar>>(); | ||
|
|
r107 | |||
|
|
r127 | @service.wire() | ||
|
|
r109 | export class Box<T> { | ||
| private _value: T | undefined; | ||||
|
|
r108 | |||
|
|
r127 | constructor(value?: T) { | ||
|
|
r109 | this._value = value; | ||
| } | ||||
|
|
r107 | |||
|
|
r119 | @service.inject(dependency("bar")) | ||
| setValue(value: T) { | ||||
|
|
r107 | this._value = value; | ||
|
|
r118 | return value; | ||
|
|
r107 | } | ||
| getValue() { | ||||
|
|
r109 | if (this._value === undefined) | ||
| throw new Error("Trying to get a value from the empty box"); | ||||
|
|
r107 | return this._value; | ||
| } | ||||
|
|
r114 | } | ||
