From e1ecd2c9dbf36de1540e1a9248e501ba1e04d3d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= Date: Mon, 2 Sep 2019 11:38:48 +0200 Subject: [PATCH] fix(context): allow `inject` to be explicitly invoked for class ctor args MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miroslav Bajtoš --- packages/context/src/__tests__/unit/inject.unit.ts | 10 ++++++++++ packages/context/src/inject.ts | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/context/src/__tests__/unit/inject.unit.ts b/packages/context/src/__tests__/unit/inject.unit.ts index 59d9272fed3e..9fb1ae327451 100644 --- a/packages/context/src/__tests__/unit/inject.unit.ts +++ b/packages/context/src/__tests__/unit/inject.unit.ts @@ -29,6 +29,16 @@ describe('function argument injection', () => { expect(meta.map(m => m.bindingSelector)).to.deepEqual(['foo']); }); + it('allows decorator to be explicitly invoked for class ctor args', () => { + class TestClass { + constructor(foo: string) {} + } + inject('foo')(TestClass, undefined, 0); + + const meta = describeInjectedArguments(TestClass); + expect(meta.map(m => m.bindingSelector)).to.deepEqual(['foo']); + }); + it('can retrieve information about injected method arguments', () => { class TestClass { test(@inject('foo') foo: string) {} diff --git a/packages/context/src/inject.ts b/packages/context/src/inject.ts index d6d06a95d3b1..e6c6285196b2 100644 --- a/packages/context/src/inject.ts +++ b/packages/context/src/inject.ts @@ -124,7 +124,7 @@ export function inject( } return function markParameterOrPropertyAsInjected( target: Object, - member: string, + member: string | undefined, methodDescriptorOrParameterIndex?: | TypedPropertyDescriptor | number,